diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2010-12-29 15:52:41 -0800 |
---|---|---|
committer | Lorenzo Colitti <lorenzo@google.com> | 2011-02-04 13:17:15 -0800 |
commit | a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5 (patch) | |
tree | d169f07acca7c333ce817d5e21b6aff9cb634e55 /src/com/android/settings/ApnEditor.java | |
parent | 5ac151ccec75fc1eee4d0b606b126a5b18582c32 (diff) | |
download | packages_apps_Settings-a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5.zip packages_apps_Settings-a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5.tar.gz packages_apps_Settings-a7e587fc8d0bcf67fd387c5f9b58b1063c217ae5.tar.bz2 |
Support configuring the protocol in APN settings.
Change-Id: I435061a631bdb2f58935af607abf8cd7c5d252ba
Diffstat (limited to 'src/com/android/settings/ApnEditor.java')
-rw-r--r-- | src/com/android/settings/ApnEditor.java | 44 |
1 files changed, 43 insertions, 1 deletions
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java index 9328c14..f738823 100644 --- a/src/com/android/settings/ApnEditor.java +++ b/src/com/android/settings/ApnEditor.java @@ -48,6 +48,7 @@ public class ApnEditor extends PreferenceActivity private final static String SAVED_POS = "pos"; private final static String KEY_AUTH_TYPE = "auth_type"; + private final static String KEY_PROTOCOL = "apn_protocol"; private static final int MENU_DELETE = Menu.FIRST; private static final int MENU_SAVE = Menu.FIRST + 1; @@ -69,6 +70,7 @@ public class ApnEditor extends PreferenceActivity private EditTextPreference mMmsPort; private ListPreference mAuthType; private EditTextPreference mApnType; + private ListPreference mProtocol; private String mCurMnc; private String mCurMcc; @@ -99,6 +101,7 @@ public class ApnEditor extends PreferenceActivity Telephony.Carriers.MMSPORT, // 13 Telephony.Carriers.AUTH_TYPE, // 14 Telephony.Carriers.TYPE, // 15 + Telephony.Carriers.PROTOCOL, // 16 }; private static final int ID_INDEX = 0; @@ -116,6 +119,7 @@ public class ApnEditor extends PreferenceActivity private static final int MMSPORT_INDEX = 13; private static final int AUTH_TYPE_INDEX = 14; private static final int TYPE_INDEX = 15; + private static final int PROTOCOL_INDEX = 16; @Override @@ -139,9 +143,12 @@ public class ApnEditor extends PreferenceActivity mMnc = (EditTextPreference) findPreference("apn_mnc"); mApnType = (EditTextPreference) findPreference("apn_type"); - mAuthType = (ListPreference) findPreference("auth_type"); + mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE); mAuthType.setOnPreferenceChangeListener(this); + mProtocol = (ListPreference) findPreference(KEY_PROTOCOL); + mProtocol.setOnPreferenceChangeListener(this); + mRes = getResources(); final Intent intent = getIntent(); @@ -238,6 +245,7 @@ public class ApnEditor extends PreferenceActivity mAuthType.setValue(null); } + mProtocol.setValue(mCursor.getString(PROTOCOL_INDEX)); } mName.setSummary(checkNull(mName.getText())); @@ -264,6 +272,28 @@ public class ApnEditor extends PreferenceActivity } else { mAuthType.setSummary(sNotSet); } + + mProtocol.setSummary( + checkNull(protocolDescription(mProtocol.getValue()))); + } + + /** + * Returns the UI choice (e.g., "IPv4/IPv6") corresponding to the given + * raw value of the protocol preference (e.g., "IPV4V6"). If unknown, + * return null. + */ + private String protocolDescription(String raw) { + int protocolIndex = mProtocol.findIndexOfValue(raw); + if (protocolIndex == -1) { + return null; + } else { + String[] values = mRes.getStringArray(R.array.apn_protocol_entries); + try { + return values[protocolIndex]; + } catch (ArrayIndexOutOfBoundsException e) { + return null; + } + } } public boolean onPreferenceChange(Preference preference, Object newValue) { @@ -278,6 +308,16 @@ public class ApnEditor extends PreferenceActivity } catch (NumberFormatException e) { return false; } + return true; + } + + if (KEY_PROTOCOL.equals(key)) { + String protocol = protocolDescription((String) newValue); + if (protocol == null) { + return false; + } + mProtocol.setSummary(protocol); + mProtocol.setValue((String) newValue); } return true; } @@ -389,6 +429,8 @@ public class ApnEditor extends PreferenceActivity values.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(authVal)); } + values.put(Telephony.Carriers.PROTOCOL, checkNotSet(mProtocol.getValue())); + values.put(Telephony.Carriers.TYPE, checkNotSet(mApnType.getText())); values.put(Telephony.Carriers.MCC, mcc); |