diff --git a/src/com/android/settings/IccLockSettings.java b/src/com/android/settings/IccLockSettings.java index 520137503a7..c389f5ee2ae 100644 --- a/src/com/android/settings/IccLockSettings.java +++ b/src/com/android/settings/IccLockSettings.java @@ -221,9 +221,13 @@ public class IccLockSettings extends PreferenceActivity ? context.getString(R.string.sim_editor_title, i + 1) : subInfo.getDisplayName()))); } - } + final SubscriptionInfo sir = Utils.findRecordBySlotId(getBaseContext(), 0); - mPhone = PhoneFactory.getDefaultPhone(); + mPhone = (sir == null) ? null + : PhoneFactory.getPhone(SubscriptionManager.getPhoneId(sir.getSubscriptionId())); + } else { + mPhone = PhoneFactory.getDefaultPhone(); + } mRes = getResources(); updatePreferences(); } diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java index 5f74ff65b87..2a1fc826ad4 100644 --- a/src/com/android/settings/SecuritySettings.java +++ b/src/com/android/settings/SecuritySettings.java @@ -298,7 +298,7 @@ public class SecuritySettings extends SettingsPreferenceFragment // Do not display SIM lock for devices without an Icc card TelephonyManager tm = TelephonyManager.getDefault(); - if (!mIsPrimary || !tm.hasIccCard()) { + if (!mIsPrimary || !isSimIccReady()) { root.removePreference(root.findPreference(KEY_SIM_LOCK)); } else { // Disable SIM lock if there is no ready SIM card. @@ -370,6 +370,24 @@ public class SecuritySettings extends SettingsPreferenceFragment return root; } + /* Return true if a there is a Slot that has Icc. + */ + private boolean isSimIccReady() { + TelephonyManager tm = TelephonyManager.getDefault(); + final List subInfoList = + mSubscriptionManager.getActiveSubscriptionInfoList(); + + if (subInfoList != null) { + for (SubscriptionInfo subInfo : subInfoList) { + if (tm.hasIccCard(subInfo.getSubscriptionId())) { + return true; + } + } + } + + return false; + } + /* Return true if a SIM is ready for locking. * TODO: consider adding to TelephonyManager or SubscritpionManasger. */