Loading src/com/android/settings/ApnEditor.java +46 −2 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.internal.telephony.PhoneConstants; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; Loading Loading @@ -117,6 +118,7 @@ public class ApnEditor extends SettingsPreferenceFragment private String[] mReadOnlyApnTypes; private String[] mReadOnlyApnFields; private boolean mReadOnlyApn; private String mUserEnteredApnType; /** * Standard projection for the interesting columns of a normal note. Loading Loading @@ -212,6 +214,7 @@ public class ApnEditor extends SettingsPreferenceFragment mReadOnlyApn = false; mReadOnlyApnTypes = null; mReadOnlyApnFields = null; mUserEnteredApnType = null; CarrierConfigManager configManager = (CarrierConfigManager) getSystemService(Context.CARRIER_CONFIG_SERVICE); Loading @@ -220,6 +223,11 @@ public class ApnEditor extends SettingsPreferenceFragment if (b != null) { mReadOnlyApnTypes = b.getStringArray( CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY); if (!ArrayUtils.isEmpty(mReadOnlyApnTypes)) { for (String apnType : mReadOnlyApnTypes) { Log.d(TAG, "onCreate: read only APN type: " + apnType); } } mReadOnlyApnFields = b.getStringArray( CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY); } Loading Loading @@ -951,7 +959,7 @@ public class ApnEditor extends SettingsPreferenceFragment callUpdate = setStringValueAndCheckIfDiff(values, Telephony.Carriers.TYPE, checkNotSet(mApnType.getText()), checkNotSet(getUserEnteredApnType()), callUpdate, TYPE_INDEX); Loading Loading @@ -1057,10 +1065,11 @@ public class ApnEditor extends SettingsPreferenceFragment // if carrier does not allow editing certain apn types, make sure type does not include // those if (!ArrayUtils.isEmpty(mReadOnlyApnTypes) && apnTypesMatch(mReadOnlyApnTypes, mApnType.getText())) { && apnTypesMatch(mReadOnlyApnTypes, getUserEnteredApnType())) { StringBuilder stringBuilder = new StringBuilder(); for (String type : mReadOnlyApnTypes) { stringBuilder.append(type).append(", "); Log.d(TAG, "getErrorMsg: appending type: " + type); } // remove last ", " if (stringBuilder.length() >= 2) { Loading Loading @@ -1107,6 +1116,41 @@ public class ApnEditor extends SettingsPreferenceFragment } } private String getUserEnteredApnType() { if (mUserEnteredApnType != null) { return mUserEnteredApnType; } // if user has not specified a type, map it to "ALL APN TYPES THAT ARE NOT READ-ONLY" mUserEnteredApnType = mApnType.getText(); if (mUserEnteredApnType != null) mUserEnteredApnType = mUserEnteredApnType.trim(); if ((TextUtils.isEmpty(mUserEnteredApnType) || PhoneConstants.APN_TYPE_ALL.equals(mUserEnteredApnType)) && !ArrayUtils.isEmpty(mReadOnlyApnTypes)) { StringBuilder editableApnTypes = new StringBuilder(); List<String> readOnlyApnTypes = Arrays.asList(mReadOnlyApnTypes); boolean first = true; for (String apnType : PhoneConstants.APN_TYPES) { // add APN type if it is not read-only and is not wild-cardable if (!readOnlyApnTypes.contains(apnType) && !apnType.equals(PhoneConstants.APN_TYPE_IA) && !apnType.equals(PhoneConstants.APN_TYPE_EMERGENCY)) { if (first) { first = false; } else { editableApnTypes.append(","); } editableApnTypes.append(apnType); } } mUserEnteredApnType = editableApnTypes.toString(); Log.d(TAG, "getUserEnteredApnType: changed apn type to editable apn types: " + mUserEnteredApnType); } return mUserEnteredApnType; } public static class ErrorDialog extends InstrumentedDialogFragment { public static void showError(ApnEditor editor) { Loading Loading
src/com/android/settings/ApnEditor.java +46 −2 Original line number Diff line number Diff line Loading @@ -52,6 +52,7 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment; import com.android.internal.telephony.PhoneConstants; import com.android.internal.util.ArrayUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.HashSet; import java.util.List; Loading Loading @@ -117,6 +118,7 @@ public class ApnEditor extends SettingsPreferenceFragment private String[] mReadOnlyApnTypes; private String[] mReadOnlyApnFields; private boolean mReadOnlyApn; private String mUserEnteredApnType; /** * Standard projection for the interesting columns of a normal note. Loading Loading @@ -212,6 +214,7 @@ public class ApnEditor extends SettingsPreferenceFragment mReadOnlyApn = false; mReadOnlyApnTypes = null; mReadOnlyApnFields = null; mUserEnteredApnType = null; CarrierConfigManager configManager = (CarrierConfigManager) getSystemService(Context.CARRIER_CONFIG_SERVICE); Loading @@ -220,6 +223,11 @@ public class ApnEditor extends SettingsPreferenceFragment if (b != null) { mReadOnlyApnTypes = b.getStringArray( CarrierConfigManager.KEY_READ_ONLY_APN_TYPES_STRING_ARRAY); if (!ArrayUtils.isEmpty(mReadOnlyApnTypes)) { for (String apnType : mReadOnlyApnTypes) { Log.d(TAG, "onCreate: read only APN type: " + apnType); } } mReadOnlyApnFields = b.getStringArray( CarrierConfigManager.KEY_READ_ONLY_APN_FIELDS_STRING_ARRAY); } Loading Loading @@ -951,7 +959,7 @@ public class ApnEditor extends SettingsPreferenceFragment callUpdate = setStringValueAndCheckIfDiff(values, Telephony.Carriers.TYPE, checkNotSet(mApnType.getText()), checkNotSet(getUserEnteredApnType()), callUpdate, TYPE_INDEX); Loading Loading @@ -1057,10 +1065,11 @@ public class ApnEditor extends SettingsPreferenceFragment // if carrier does not allow editing certain apn types, make sure type does not include // those if (!ArrayUtils.isEmpty(mReadOnlyApnTypes) && apnTypesMatch(mReadOnlyApnTypes, mApnType.getText())) { && apnTypesMatch(mReadOnlyApnTypes, getUserEnteredApnType())) { StringBuilder stringBuilder = new StringBuilder(); for (String type : mReadOnlyApnTypes) { stringBuilder.append(type).append(", "); Log.d(TAG, "getErrorMsg: appending type: " + type); } // remove last ", " if (stringBuilder.length() >= 2) { Loading Loading @@ -1107,6 +1116,41 @@ public class ApnEditor extends SettingsPreferenceFragment } } private String getUserEnteredApnType() { if (mUserEnteredApnType != null) { return mUserEnteredApnType; } // if user has not specified a type, map it to "ALL APN TYPES THAT ARE NOT READ-ONLY" mUserEnteredApnType = mApnType.getText(); if (mUserEnteredApnType != null) mUserEnteredApnType = mUserEnteredApnType.trim(); if ((TextUtils.isEmpty(mUserEnteredApnType) || PhoneConstants.APN_TYPE_ALL.equals(mUserEnteredApnType)) && !ArrayUtils.isEmpty(mReadOnlyApnTypes)) { StringBuilder editableApnTypes = new StringBuilder(); List<String> readOnlyApnTypes = Arrays.asList(mReadOnlyApnTypes); boolean first = true; for (String apnType : PhoneConstants.APN_TYPES) { // add APN type if it is not read-only and is not wild-cardable if (!readOnlyApnTypes.contains(apnType) && !apnType.equals(PhoneConstants.APN_TYPE_IA) && !apnType.equals(PhoneConstants.APN_TYPE_EMERGENCY)) { if (first) { first = false; } else { editableApnTypes.append(","); } editableApnTypes.append(apnType); } } mUserEnteredApnType = editableApnTypes.toString(); Log.d(TAG, "getUserEnteredApnType: changed apn type to editable apn types: " + mUserEnteredApnType); } return mUserEnteredApnType; } public static class ErrorDialog extends InstrumentedDialogFragment { public static void showError(ApnEditor editor) { Loading