From 6f341b2c3ecede3ea19d59300b1a6dc9643f28d5 Mon Sep 17 00:00:00 2001 From: PauloftheWest Date: Tue, 2 Dec 2014 08:45:00 -0800 Subject: [PATCH 1/2] Added Multi-SIM capability to Access Point Names + In Settings->More->Cellular networks->AccessPoint Names will display the APNs for the selected SubscriptionInfo. Bug: 18246837 Change-Id: If8f46c2fa82cf4b2051ddb5f15afc8c59cb9b850 --- src/com/android/settings/ApnSettings.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index 0c0e53cd9a3..db5449f3744 100644 --- a/src/com/android/settings/ApnSettings.java +++ b/src/com/android/settings/ApnSettings.java @@ -39,6 +39,7 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceGroup; import android.preference.PreferenceScreen; import android.provider.Telephony; +import android.telephony.SubscriptionInfo; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; @@ -88,6 +89,7 @@ public class ApnSettings extends SettingsPreferenceFragment implements private RestoreApnUiHandler mRestoreApnUiHandler; private RestoreApnProcessHandler mRestoreApnProcessHandler; private HandlerThread mRestoreDefaultApnThread; + private SubscriptionInfo mSubscriptionInfo; private UserManager mUm; @@ -128,6 +130,8 @@ public class ApnSettings extends SettingsPreferenceFragment implements @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + final Activity activity = getActivity(); + final int subId = activity.getIntent().getIntExtra("sub_id", -1); mUm = (UserManager) getSystemService(Context.USER_SERVICE); @@ -137,6 +141,8 @@ public class ApnSettings extends SettingsPreferenceFragment implements if (!mUm.hasUserRestriction(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS)) { setHasOptionsMenu(true); } + + mSubscriptionInfo = Utils.findRecordBySubId(activity, subId); } @Override @@ -196,8 +202,11 @@ public class ApnSettings extends SettingsPreferenceFragment implements } private void fillList() { - String where = "numeric=\"" - + android.os.SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, "") + final String mccmnc = mSubscriptionInfo == null ? "" + : Integer.toString(mSubscriptionInfo.getMcc()) + + Integer.toString(mSubscriptionInfo.getMnc()); + final String where = "numeric=\"" + + mccmnc + "\""; Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, new String[] { From 0b8788aae47932db56bf71869c5d58e0338420a4 Mon Sep 17 00:00:00 2001 From: PauloftheWest Date: Mon, 8 Dec 2014 13:49:35 -0800 Subject: [PATCH 2/2] Fixed a SIM Lock UI issue + The SIM lock option will now appear if there is any SIM with locking capabilities. + Also, if the first slot does not have a SIM in it, then the SIM lock screen will disable the ability to lock the first slot. Bug: 18473536 Change-Id: Ib4e0ed6e94b00bc07c9febdad433fdb3c55294b8 --- src/com/android/settings/IccLockSettings.java | 8 ++++++-- .../android/settings/SecuritySettings.java | 20 ++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) 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. */