summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/ApnSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/ApnSettings.java')
-rw-r--r--src/com/android/settings/ApnSettings.java38
1 files changed, 31 insertions, 7 deletions
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java
index 697094a..b36ab1c 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,8 @@ public class ApnSettings extends SettingsPreferenceFragment implements
final int subId = activity.getIntent().getIntExtra(SUB_ID,
SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ mImsi = activity.getIntent().getStringExtra(EXTRA_IMSI);
+
mUm = (UserManager) getSystemService(Context.USER_SERVICE);
mMobileStateFilter = new IntentFilter(
@@ -408,19 +416,35 @@ 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 && mImsi != null) {
+ 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 && mImsi != null
+ && mSubscriptionInfo != null) {
+ 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;
}