diff options
author | Brad Ebinger <breadley@google.com> | 2017-08-10 01:11:27 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-08-10 01:11:27 +0000 |
commit | 278225bec84e3629b410bdfd8bf86c5de6bd4755 (patch) | |
tree | 017c0649b10037a1541f48c9c3a47fbaf1647be5 | |
parent | 47db32884b5687de32ea9bb2a3740a63e97fb615 (diff) | |
parent | 768aa489ee2493173d1a1becef916ce0f7718b5c (diff) | |
download | ims-278225bec84e3629b410bdfd8bf86c5de6bd4755.tar.gz |
Wait until the SIM is loaded for IMS Registration
am: 768aa489ee
Change-Id: If8243ea24d82fc419b7efdf1d9525419e2382db3
-rw-r--r-- | rcs/rcsservice/src/com/android/service/ims/RcsService.java | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/rcs/rcsservice/src/com/android/service/ims/RcsService.java b/rcs/rcsservice/src/com/android/service/ims/RcsService.java index 53ba728..aeccb30 100644 --- a/rcs/rcsservice/src/com/android/service/ims/RcsService.java +++ b/rcs/rcsservice/src/com/android/service/ims/RcsService.java @@ -61,6 +61,8 @@ import com.android.ims.internal.IRcsPresence; import com.android.ims.RcsPresence.PublishState; import com.android.ims.internal.Logger; +import com.android.internal.telephony.IccCardConstants; +import com.android.internal.telephony.TelephonyIntents; import com.android.service.ims.RcsStackAdaptor; import com.android.service.ims.presence.PresencePublication; @@ -115,8 +117,6 @@ public class RcsService extends Service{ Settings.Global.getUriFor(Settings.Global.VT_IMS_ENABLED), false, mVtSettingObserver); - registerImsConnectionStateListener(); - mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -127,6 +127,11 @@ public class RcsService extends Service{ } else if(ImsManager.ACTION_IMS_SERVICE_DOWN.equalsIgnoreCase( intent.getAction())){ handleImsServiceDown(); + } else if(TelephonyIntents.ACTION_SIM_STATE_CHANGED.equalsIgnoreCase( + intent.getAction())) { + String stateExtra = intent.getStringExtra( + IccCardConstants.INTENT_KEY_ICC_STATE); + handleSimStateChanged(stateExtra); } } }; @@ -134,6 +139,7 @@ public class RcsService extends Service{ IntentFilter statusFilter = new IntentFilter(); statusFilter.addAction(ImsManager.ACTION_IMS_SERVICE_UP); statusFilter.addAction(ImsManager.ACTION_IMS_SERVICE_DOWN); + statusFilter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); registerReceiver(mReceiver, statusFilter); } @@ -151,6 +157,14 @@ public class RcsService extends Service{ } } + public void handleSimStateChanged(String state) { + + if(IccCardConstants.INTENT_VALUE_ICC_LOADED.equalsIgnoreCase(state)) { + // ImsManager depends on a loaded SIM to get the default Voice Registration. + registerImsConnectionStateListener(); + } + } + @Override public int onStartCommand(Intent intent, int flags, int startId) { @@ -358,8 +372,7 @@ public class RcsService extends Service{ ImsManager imsManager = ImsManager.getInstance(this, SubscriptionManager.getDefaultVoicePhoneId()); if (imsManager != null) { - imsManager.addRegistrationListener(ImsServiceClass.MMTEL, - mImsConnectionStateListener); + imsManager.addRegistrationListener(mImsConnectionStateListener); } } catch (ImsException e) { logger.error("addRegistrationListener exception=", e); |