SipManager.newInstance 返回 null

Ily*_*okh 5 android sip android-7.0-nougat

我实现了简单的 SIP 客户端应用程序来接收呼叫。我浏览官方手册并从中获取代码。

我注意到

SipManager.newInstance(getApplicationContext());
Run Code Online (Sandbox Code Playgroud)

返回空值。文档称,当设备不支持 SIP API 时,就会发生这种情况。不过,我使用运行 Android 7.0 的 LG G6,并成功测试了来自 Google Play 的第三方 SIP 客户端。所以我怀疑API是否真的不受支持。我怎样才能检查呢?

我的清单具有所有权限 (INTERNETUSE_SIP)

权限USE_SIP由用户授予

Ome*_*sif 4

问题是并非所有设备都支持 Android SDK。
您可以先检查当前设备是否支持:

 if(SipManager.isVoipSupported(getApplicationContext())){
     Log.d("VOIP:", "Supported!");
 }
 else{
     Log.d("VOIP:", "Not Supported");
 }
 if(SipManager.isApiSupported(getApplicationContext())){
     Log.d("API:", "Supported!");
 }
 else{
     Log.d("API:","NotSupported!");
 }
Run Code Online (Sandbox Code Playgroud)

有时支持 API,但不支持 VOIP。我测试过Moto E 2nd Gen.Moto X 2014, 1st Gen.Moto X 上不支持 API 和 VOIP,Moto E 上仅支持 API,但不支持 VOIP。
为了避免这个警告,您可以使用第 3 方 API,例如Doubango

来源Android 上的 SIP:本文详细讨论了这个问题并提出了替代 API 的建议。