From 6716780ab9fa557da806c92a4b3602569f314b63 Mon Sep 17 00:00:00 2001 From: Roman Birg Date: Wed, 1 Jun 2016 10:39:30 -0700 Subject: [PATCH] Settings: use subid & imsi for MSIM apn lookups Ticket: PAELLA-158 Change-Id: Icca65a9a46533e1bbcfd4dd08e974d736ea1253b Signed-off-by: Roman Birg --- src/com/android/settings/ApnSettings.java | 40 +++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 7 deletions(-) diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index 697094afe9..0459a13460 100644 --- a/src/com/android/settings/ApnSettings.java +++ b/src/com/android/settings/ApnSettings.java @@ -72,8 +72,12 @@ public class ApnSettings extends SettingsPreferenceFragment implements public static final String PREFERRED_APN_URI = "content://telephony/carriers/preferapn"; + public static final Uri PREFERRED_MSIM_APN_URI = + Uri.parse("content://telephony/carriers/preferapn/subIdImsi"); + public static final String APN_ID = "apn_id"; public static final String SUB_ID = "sub_id"; + public static final String EXTRA_IMSI = "imsi"; public static final String MVNO_TYPE = "mvno_type"; public static final String MVNO_MATCH_DATA = "mvno_match_data"; @@ -117,6 +121,8 @@ public class ApnSettings extends SettingsPreferenceFragment implements private boolean mHideImsApn; private boolean mAllowAddingApns; + private String mImsi; + private final BroadcastReceiver mMobileStateReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -157,6 +163,11 @@ public class ApnSettings extends SettingsPreferenceFragment implements final int subId = activity.getIntent().getIntExtra(SUB_ID, SubscriptionManager.INVALID_SUBSCRIPTION_ID); + mImsi = activity.getIntent().getStringExtra(EXTRA_IMSI); + if (mImsi == null) { + mImsi = ""; + } + mUm = (UserManager) getSystemService(Context.USER_SERVICE); mMobileStateFilter = new IntentFilter( @@ -408,19 +419,34 @@ public class ApnSettings extends SettingsPreferenceFragment implements ContentValues values = new ContentValues(); values.put(APN_ID, mSelectedKey); - resolver.update(PREFERAPN_URI, values, null, null); + if (TelephonyManager.getDefault().getPhoneCount() > 1) { + Uri qUri = Uri.withAppendedPath(PREFERRED_MSIM_APN_URI, + String.valueOf(mSubscriptionInfo.getSubscriptionId())); + qUri = Uri.withAppendedPath(qUri, mImsi); + resolver.update(qUri, values, null, null); + } else { + resolver.update(PREFERAPN_URI, values, null, null); + } } private String getSelectedApnKey() { String key = null; - Cursor cursor = getContentResolver().query(PREFERAPN_URI, new String[] {"_id"}, - null, null, Telephony.Carriers.DEFAULT_SORT_ORDER); - if (cursor.getCount() > 0) { - cursor.moveToFirst(); - key = cursor.getString(ID_INDEX); + Uri uri; + if (TelephonyManager.getDefault().getPhoneCount() > 1) { + uri = Uri.withAppendedPath(PREFERRED_MSIM_APN_URI, + String.valueOf(mSubscriptionInfo.getSubscriptionId())); + uri = Uri.withAppendedPath(uri, mImsi); + } else { + uri = PREFERAPN_URI; + } + try (Cursor cursor = getContentResolver().query(uri, new String[] {"_id"}, + null, null, Telephony.Carriers.DEFAULT_SORT_ORDER)) { + if (cursor != null && cursor.getCount() > 0) { + cursor.moveToFirst(); + key = cursor.getString(ID_INDEX); + } } - cursor.close(); return key; } -- 2.11.0