Мой метод ниже вызывается на onStartCommand
класса обслуживания и отлично работает для API уровня 27 и ниже.Затем SIP-вызов успешно инициируется без каких-либо проблем.
Но для API уровня 28 sipManager не открывается и mSipManager.setRegistrationListener
не вызывается.Так что SIP onRegistering
, onRegistrationDone
или onRegistrationFailed
не вызывается.Предупреждение или ошибка не найдены.Что я должен сделать для API уровня 28?
public void initializeLocalProfile() {
try {
SipProfile.Builder builder = new SipProfile.Builder(sip_username, "" + sipServerDomain);
builder.setPort(sipPort);
builder.setPassword(sip_password);
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 = SipManager.newInstance(this);
mSipManager.open(mSipProfile, pi, null);
if (mSipManager.isOpened(sip_username + "@" + sipServerDomain)) {
mSipManager.setRegistrationListener(mSipProfile.getUriString(), new SipRegistrationListener() {
@Override
public void onRegistering(String localProfileUri) {
Log.d(TAG, "Registering with SIP Server..., localProfileUri2: " + localProfileUri);
}
@Override
public void onRegistrationDone(String localProfileUri, long expiryTime) {
Log.d(TAG, "SIP onRegistrationDone, expiryTime: " + expiryTime);
((AeroApplication) getApplication()).setRegisteredSIP(true);
}
@Override
public void onRegistrationFailed(String localProfileUri, int errorCode, String errorMessage) {
Log.d(TAG, "SIP Registration failed :" + errorMessage + ", errorCode :" + errorCode);
}
});
} else {
Toast.makeText(context, "SIP SipManager not opened, try again.", Toast.LENGTH_SHORT).show();
}
} catch (ParseException pe) {
Log.d(TAG, " SIP ParseException : " + pe.getMessage());
} catch (SipException se) {
Log.d(TAG, "SIP Exception: " + se.getMessage());
}
}