diff options
| author | Roman Birg <roman@cyngn.com> | 2016-06-01 10:39:30 -0700 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@cyanogenmod.org> | 2016-06-07 20:22:40 -0700 |
| commit | 6716780ab9fa557da806c92a4b3602569f314b63 (patch) | |
| tree | 64338f0933454772083806a305c4a6fee6a32d0d /src/com/android | |
| parent | 54dc1d4475e18736a94e3d32d0280c97dcc67807 (diff) | |
| download | packages_apps_Settings-6716780ab9fa557da806c92a4b3602569f314b63.tar.gz packages_apps_Settings-6716780ab9fa557da806c92a4b3602569f314b63.tar.bz2 packages_apps_Settings-6716780ab9fa557da806c92a4b3602569f314b63.zip | |
Settings: use subid & imsi for MSIM apn lookups
Ticket: PAELLA-158
Change-Id: Icca65a9a46533e1bbcfd4dd08e974d736ea1253b
Signed-off-by: Roman Birg <roman@cyngn.com>
Diffstat (limited to 'src/com/android')
| -rw-r--r-- | src/com/android/settings/ApnSettings.java | 40 |
1 files changed, 33 insertions, 7 deletions
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index 697094afe..0459a1346 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; } |
