api isApiSupported返回true但SipManager newInstance仍然在Android原生Sip中返回null

时间:2016-05-18 12:31:24

标签: java android

我使用Android原生Sip api来初始化Sip客户端。因为我对Sip协议感到困惑,所以我阅读了关于sip的android开发者文档并关注它。当我在Nexus5上运行我的应用程序时,它运行正常,但是当我运行时它在其他设备上如coolpad,它从SipManager抛出NullPointException。以下是我的代码。由于某种原因,用户名,密码和域是私有的。

DATE

以下是我的logcat。最奇怪的是,我发现api isApiSupported返回true,而SipManager对象不为null。我找不到它的原因。

public static SipManager manager;
public static SipProfile me;
public static String username;
public static String passwd;

public static void initializeSip(Context context) {
System.out.println("initializeSip");
if (manager == null) {
  manager = SipManager.newInstance(context);
}
if (me != null) {
  closeLocalProfile();
}
username = SharedPreferences.getLoginInfo().getModel().getVos_phone();
passwd = SharedPreferences.getLoginInfo().getModel().getVos_phone_pwd();
try {
  if (!(SipManager.isApiSupported(context) && SipManager.isVoipSupported(context))) {
    System.out.println("cannot support");
    return;
  }

  System.out.println("isApiSupported="+SipManager.isApiSupported(context));
  System.out.println("SipManager="+SipManager.newInstance(context));

  SipProfile.Builder builder = new SipProfile.Builder(username, domain);
  builder.setPassword(passwd);
  me = builder.build();

  manager.open(me);
  SipRegistrationListener listener = new SipRegistrationListener() {
    @Override
    public void onRegistering(String localProfileUri) {
      System.out.println("Registering with SIP Server");

    }

    @Override
    public void onRegistrationDone(String localProfileUri, long expiryTime) {
      System.out.println("Register success");

    }

    @Override
    public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) {
      System.out.println("Registeration failed.Please check Settings.");
      System.out.println("errorCode="+errorCode);
      System.out.println("errorMessage="+errorMessage);
    }
  };

  manager.setRegistrationListener(me.getUriString(),listener);
  manager.register(me,3000,listener);
} catch (ParseException e) {
  e.printStackTrace();
} catch (SipException e) {
  e.printStackTrace();
}
}

0 个答案:

没有答案