在 Linphone 中拒绝呼叫时出现 NullPointer 异常

NullPointer exception while declining Call in Linphone

我在 android 中遇到了 Linphone 库的问题。 当我有来电时,如果我接听,一切都很好,但如果我挂断,应用程序就会崩溃。

我有一个 LinphoneCore 私有变量:

private LinphoneCore mLc;

这是崩溃的函数。

private void declineCall() {
    Log.e("CSR","Decline Call");
    mLc.terminateAllCalls();
}

这里,输出:

04-07 10:48:40.599: E/CSR(4409): Decline Call
04-07 10:48:40.609: E/AndroidRuntime(4409): FATAL EXCEPTION: main
04-07 10:48:40.609: E/AndroidRuntime(4409): Process: com.test.myapp, PID: 4409
04-07 10:48:40.609: E/AndroidRuntime(4409): java.lang.NullPointerException: Attempt to invoke interface method 'void org.linphone.core.LinphoneCore.terminateAllCalls()' on a null object reference
04-07 10:48:40.609: E/AndroidRuntime(4409):     at com.test.myapp.IncomingCallActivity.declineCall(IncomingCallActivity.java:165)
04-07 10:48:40.609: E/AndroidRuntime(4409):     at com.test.myapp.IncomingCallActivity.onClick(IncomingCallActivity.java:138)

我想 LinphoneCore 变量必须初始化,但我不知道我必须输入什么。

有人遇到同样的问题或可以帮助解决问题吗?

谢谢。

我通过阅读 linphone 的代码并尝试不同的选项找到了两种可能的解决方案。

解决方案 1:

private void declineCall() {
    mLc = LinphoneManager.getLcIfManagerNotDestroyedOrNull();
    if (mLc != null) {
        mLc.terminateAllCalls();
    }
}

解决方案 2:

private void declineCall() {
    mLc = LinphoneManager.getLc();
    if (mLc != null) {
        mLc.terminateAllCalls();
    }
}

现在可以正常使用了,不会再崩溃了:-)