Fix mvno match data is incorrect for APNs
[Cause of Defect] When user editing an existing apn, ApnPreference won't pass the subId to ApnEditor. As a result, if use change the mvno type to 'imsi', ApnEditor can NOT fetch the correct IMSI due to invalid subId. [How To Fix] Pass subId to ApnEditor, which is same as adding new APN. Bug: 34646368 Test: manual - edited an existing apn Change-Id: I79fe55ccdeb8dab0ffcc7dfb22ba680beb58b9cd
This commit is contained in:
committed by
daisuke oyamada
parent
4ce19f5c4f
commit
ec5109ab6d
11
src/com/android/settings/ApnPreference.java
Normal file → Executable file
11
src/com/android/settings/ApnPreference.java
Normal file → Executable file
@@ -23,6 +23,7 @@ import android.net.Uri;
|
|||||||
import android.provider.Telephony;
|
import android.provider.Telephony;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceViewHolder;
|
import android.support.v7.preference.PreferenceViewHolder;
|
||||||
|
import android.telephony.SubscriptionManager;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
@@ -35,6 +36,8 @@ public class ApnPreference extends Preference implements
|
|||||||
CompoundButton.OnCheckedChangeListener, OnClickListener {
|
CompoundButton.OnCheckedChangeListener, OnClickListener {
|
||||||
final static String TAG = "ApnPreference";
|
final static String TAG = "ApnPreference";
|
||||||
|
|
||||||
|
private int mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
|
||||||
public ApnPreference(Context context, AttributeSet attrs, int defStyle) {
|
public ApnPreference(Context context, AttributeSet attrs, int defStyle) {
|
||||||
super(context, attrs, defStyle);
|
super(context, attrs, defStyle);
|
||||||
}
|
}
|
||||||
@@ -116,7 +119,9 @@ public class ApnPreference extends Preference implements
|
|||||||
if (context != null) {
|
if (context != null) {
|
||||||
int pos = Integer.parseInt(getKey());
|
int pos = Integer.parseInt(getKey());
|
||||||
Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos);
|
Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos);
|
||||||
context.startActivity(new Intent(Intent.ACTION_EDIT, url));
|
Intent editIntent = new Intent(Intent.ACTION_EDIT, url);
|
||||||
|
editIntent.putExtra(ApnSettings.SUB_ID, mSubId);
|
||||||
|
context.startActivity(editIntent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -128,4 +133,8 @@ public class ApnPreference extends Preference implements
|
|||||||
public boolean getSelectable() {
|
public boolean getSelectable() {
|
||||||
return mSelectable;
|
return mSelectable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSubId(int subId) {
|
||||||
|
mSubId = subId;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -240,8 +240,9 @@ public class ApnSettings extends RestrictedSettingsFragment implements
|
|||||||
|
|
||||||
private void fillList() {
|
private void fillList() {
|
||||||
final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
|
final TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
|
||||||
final String mccmnc = mSubscriptionInfo == null ? ""
|
final int subId = mSubscriptionInfo != null ? mSubscriptionInfo.getSubscriptionId()
|
||||||
: tm.getSimOperator(mSubscriptionInfo.getSubscriptionId());
|
: SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
final String mccmnc = mSubscriptionInfo == null ? "" : tm.getSimOperator(subId);
|
||||||
Log.d(TAG, "mccmnc = " + mccmnc);
|
Log.d(TAG, "mccmnc = " + mccmnc);
|
||||||
StringBuilder where = new StringBuilder("numeric=\"" + mccmnc +
|
StringBuilder where = new StringBuilder("numeric=\"" + mccmnc +
|
||||||
"\" AND NOT (type='ia' AND (apn=\"\" OR apn IS NULL)) AND user_visible!=0");
|
"\" AND NOT (type='ia' AND (apn=\"\" OR apn IS NULL)) AND user_visible!=0");
|
||||||
@@ -257,8 +258,8 @@ public class ApnSettings extends RestrictedSettingsFragment implements
|
|||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
IccRecords r = null;
|
IccRecords r = null;
|
||||||
if (mUiccController != null && mSubscriptionInfo != null) {
|
if (mUiccController != null && mSubscriptionInfo != null) {
|
||||||
r = mUiccController.getIccRecords(SubscriptionManager.getPhoneId(
|
r = mUiccController.getIccRecords(
|
||||||
mSubscriptionInfo.getSubscriptionId()), UiccController.APP_FAM_3GPP);
|
SubscriptionManager.getPhoneId(subId), UiccController.APP_FAM_3GPP);
|
||||||
}
|
}
|
||||||
PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list");
|
PreferenceGroup apnList = (PreferenceGroup) findPreference("apn_list");
|
||||||
apnList.removeAll();
|
apnList.removeAll();
|
||||||
@@ -285,6 +286,7 @@ public class ApnSettings extends RestrictedSettingsFragment implements
|
|||||||
pref.setSummary(apn);
|
pref.setSummary(apn);
|
||||||
pref.setPersistent(false);
|
pref.setPersistent(false);
|
||||||
pref.setOnPreferenceChangeListener(this);
|
pref.setOnPreferenceChangeListener(this);
|
||||||
|
pref.setSubId(subId);
|
||||||
|
|
||||||
boolean selectable = ((type == null) || !type.equals("mms"));
|
boolean selectable = ((type == null) || !type.equals("mms"));
|
||||||
pref.setSelectable(selectable);
|
pref.setSelectable(selectable);
|
||||||
|
Reference in New Issue
Block a user