Android的开放的SipProfile UDP端口错误(Android SipProfile U

2019-10-20 06:19发布

我想通过UPD连接到我的SIP服务器,我的用户名,服务器(域)的IP地址和端口(例如9990)。

我得到以下错误:

android.net.sip.SipException: SipService.createSession() returns null

在这条线:mSipManager.register(mSipProfile,300,mSipRegistrationListener);


下面是我使用的代码,改编自Android文档:

private void startSip() {
    LogUtils.LOGE(TAG, "[startSip]");
    if (SipManager.isVoipSupported(this) && SipManager.isApiSupported(this)) {
        if (mSipManager == null) {
            mSipManager = SipManager.newInstance(this);
        }

        try {
            SipProfile.Builder builder = new SipProfile.Builder("sip:user@domainIP:9990");
            builder.setPassword("pass"); 
            builder.setProtocol("UDP"); 

            mSipProfile = builder.build();
            mSipManager.open(mSipProfile);
            mSipManager.register(mSipProfile, 300, mSipRegistrationListener);

            mSipManager.setRegistrationListener(mSipProfile.getUriString(), mSipRegistrationListener); 

        } catch (ParseException e) {
            e.printStackTrace();
        } catch (SipException e) {
            e.printStackTrace();
        }
    } else {
        Log.d(TAG, "SIP is not supported!");
    }
}

如果我尝试设置这样的轮廓:

mSipProfile.Builder builder = new SipProfile.Builder("user", "domain:port");

我犯了同样的错误。

如果我尝试:

mSipProfile.Builder builder = new SipProfile.Builder("user", "domain");
builder.setPort(9990);

相同的错误如上。


如果我不指定端口,我会得到如下:

登记不与错误代码= -4,接着运行注册超时错误代码= -5

任何想法如何注册使用UPD和自定义端口服务器? 顺便说一句,我测试的无线网络连接,我已经设置了权限,并在清单中要求的“使用特征”。

Answer 1:

事实证明,只有这样,才能使工作是使用的PendingIntent,即使你不需要或不使用它。 并设置)@open(一空监听器,请参见下面的代码:

            mSipProfile = builder.build();

            Intent i = new Intent();
            i.setAction("android.SipDemo.INCOMING_CALL");
            PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, Intent.FILL_IN_DATA);

            mSipManager.open(mSipProfile, pi, null);


文章来源: Android SipProfile Uri UDP Port error