diff --git a/res/values/strings.xml b/res/values/strings.xml index e93e06f87af..cac168f0a85 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -10079,6 +10079,9 @@ Take call on + + This APN cannot be changed. + Improve tablet\'s battery life diff --git a/src/com/android/settings/network/ApnPreference.java b/src/com/android/settings/network/ApnPreference.java index a7fbb6eaa92..f0395398891 100755 --- a/src/com/android/settings/network/ApnPreference.java +++ b/src/com/android/settings/network/ApnPreference.java @@ -27,6 +27,7 @@ import android.util.Log; import android.view.View; import android.widget.CompoundButton; import android.widget.RadioButton; +import android.widget.Toast; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; @@ -54,6 +55,7 @@ public class ApnPreference extends Preference implements CompoundButton.OnChecke private static CompoundButton mCurrentChecked = null; private boolean mProtectFromCheckedChange = false; private boolean mSelectable = true; + private boolean mHideDetails = false; @Override public void onBindViewHolder(PreferenceViewHolder view) { @@ -113,6 +115,11 @@ public class ApnPreference extends Preference implements CompoundButton.OnChecke super.onClick(); Context context = getContext(); if (context != null) { + if (mHideDetails) { + Toast.makeText(context, context.getString( + R.string.cannot_change_apn_toast), Toast.LENGTH_LONG).show(); + return; + } int pos = Integer.parseInt(getKey()); Uri url = ContentUris.withAppendedId(Telephony.Carriers.CONTENT_URI, pos); Intent editIntent = new Intent(Intent.ACTION_EDIT, url); @@ -132,4 +139,8 @@ public class ApnPreference extends Preference implements CompoundButton.OnChecke public void setSubId(int subId) { mSubId = subId; } + + public void setHideDetails() { + mHideDetails = true; + } } diff --git a/src/com/android/settings/network/ApnSettings.java b/src/com/android/settings/network/ApnSettings.java index a71dfaa7e16..3b1e14c93f8 100755 --- a/src/com/android/settings/network/ApnSettings.java +++ b/src/com/android/settings/network/ApnSettings.java @@ -78,12 +78,23 @@ public class ApnSettings extends RestrictedSettingsFragment { public static final String MVNO_TYPE = "mvno_type"; public static final String MVNO_MATCH_DATA = "mvno_match_data"; + private static final String[] CARRIERS_PROJECTION = new String[] { + Telephony.Carriers._ID, + Telephony.Carriers.NAME, + Telephony.Carriers.APN, + Telephony.Carriers.TYPE, + Telephony.Carriers.MVNO_TYPE, + Telephony.Carriers.MVNO_MATCH_DATA, + Telephony.Carriers.EDITED, + }; + private static final int ID_INDEX = 0; private static final int NAME_INDEX = 1; private static final int APN_INDEX = 2; private static final int TYPES_INDEX = 3; private static final int MVNO_TYPE_INDEX = 4; private static final int MVNO_MATCH_DATA_INDEX = 5; + private static final int EDITED_INDEX = 6; private static final int MENU_NEW = Menu.FIRST; private static final int MENU_RESTORE = Menu.FIRST + 1; @@ -116,6 +127,7 @@ public class ApnSettings extends RestrictedSettingsFragment { private boolean mHideImsApn; private boolean mAllowAddingApns; + private boolean mHidePresetApnDetails; public ApnSettings() { super(UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS); @@ -196,6 +208,7 @@ public class ApnSettings extends RestrictedSettingsFragment { mAllowAddingApns = false; } } + mHidePresetApnDetails = b.getBoolean(CarrierConfigManager.KEY_HIDE_PRESET_APN_DETAILS_BOOL); mUserManager = UserManager.get(activity); } @@ -277,9 +290,8 @@ public class ApnSettings extends RestrictedSettingsFragment { where.append(" AND NOT (type='ims')"); } - Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, new String[] { - "_id", "name", "apn", "type", "mvno_type", "mvno_match_data"}, where.toString(), - null, Telephony.Carriers.DEFAULT_SORT_ORDER); + Cursor cursor = getContentResolver().query(Telephony.Carriers.CONTENT_URI, + CARRIERS_PROJECTION, where.toString(), null, Telephony.Carriers.DEFAULT_SORT_ORDER); if (cursor != null) { IccRecords r = null; @@ -304,14 +316,19 @@ public class ApnSettings extends RestrictedSettingsFragment { String type = cursor.getString(TYPES_INDEX); String mvnoType = cursor.getString(MVNO_TYPE_INDEX); String mvnoMatchData = cursor.getString(MVNO_MATCH_DATA_INDEX); + int edited = cursor.getInt(EDITED_INDEX); ApnPreference pref = new ApnPreference(getPrefContext()); pref.setKey(key); pref.setTitle(name); - pref.setSummary(apn); pref.setPersistent(false); pref.setSubId(subId); + if (mHidePresetApnDetails && edited == Telephony.Carriers.UNEDITED) { + pref.setHideDetails(); + } else { + pref.setSummary(apn); + } boolean selectable = ((type == null) || !type.equals("mms")); pref.setSelectable(selectable);