diff options
author | Brad Ebinger <breadley@google.com> | 2017-08-09 15:06:45 -0700 |
---|---|---|
committer | Brad Ebinger <breadley@google.com> | 2017-08-09 15:20:02 -0700 |
commit | 768aa489ee2493173d1a1becef916ce0f7718b5c (patch) | |
tree | 38a99df9f70f1a6c4f0992bc0e63945a23cacde9 | |
parent | d707287529977281b5edc38bbd8bd77bc65146d8 (diff) | |
download | ims-768aa489ee2493173d1a1becef916ce0f7718b5c.tar.gz |
Wait until the SIM is loaded for IMS Registrationoreo-dr1-dev
We need to wait until a sim is detected an loaded
to register for IMS Registration updates, or there
is a possibility that we will try to register for
an IMS Registration listener with an invalid
Phone Id.
Bug: 64375490
Test: Manual
Change-Id: I2f2f9c33908a1ce049f8025c1fa3f06ba4b27032
-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); |