summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrad Ebinger <breadley@google.com>2017-08-10 01:13:51 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-08-10 01:13:51 +0000
commit6d6b4b0a174a3f00b8f5b9b258028557eafdf01c (patch)
tree017c0649b10037a1541f48c9c3a47fbaf1647be5
parent9f3d0aa822aaa6b1c49e73584be14ad3218995d8 (diff)
parent278225bec84e3629b410bdfd8bf86c5de6bd4755 (diff)
downloadims-6d6b4b0a174a3f00b8f5b9b258028557eafdf01c.tar.gz
Wait until the SIM is loaded for IMS Registration am: 768aa489ee
am: 278225bec8 Change-Id: I50a01fc0aaa5b8f6aa0d9a8a4138cd922c591c2b
-rw-r--r--rcs/rcsservice/src/com/android/service/ims/RcsService.java21
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);