diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2010-12-29 15:52:41 -0800 |
---|---|---|
committer | Lorenzo Colitti <lorenzo@google.com> | 2011-02-22 01:42:32 -0800 |
commit | a52c5698ca9da9f681232ac92cc02de1138956a5 (patch) | |
tree | 316c4475d09b32fc78bddf7645a7572216accdaf /src/com/android/settings/ApnEditor.java | |
parent | bd0448185f32d52e3561e1b10e00e16ec5b4a7cd (diff) | |
download | packages_apps_Settings-a52c5698ca9da9f681232ac92cc02de1138956a5.zip packages_apps_Settings-a52c5698ca9da9f681232ac92cc02de1138956a5.tar.gz packages_apps_Settings-a52c5698ca9da9f681232ac92cc02de1138956a5.tar.bz2 |
Support configuring the protocol in APN settings.
Bug: 3333633
Change-Id: I0797cd97074fe1b8a1318168b86fe4627488215a
Diffstat (limited to 'src/com/android/settings/ApnEditor.java')
-rw-r--r-- | src/com/android/settings/ApnEditor.java | 50 |
1 files changed, 49 insertions, 1 deletions
diff --git a/src/com/android/settings/ApnEditor.java b/src/com/android/settings/ApnEditor.java index e097854..4ac7401 100644 --- a/src/com/android/settings/ApnEditor.java +++ b/src/com/android/settings/ApnEditor.java @@ -37,6 +37,7 @@ import android.view.Menu; import android.view.MenuItem; import com.android.internal.telephony.TelephonyProperties; +import com.android.internal.telephony.RILConstants; public class ApnEditor extends PreferenceActivity @@ -47,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; @@ -67,6 +69,7 @@ public class ApnEditor extends PreferenceActivity private EditTextPreference mMmsPort; private ListPreference mAuthType; private EditTextPreference mApnType; + private ListPreference mProtocol; private String mCurMnc; private String mCurMcc; @@ -97,6 +100,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; @@ -114,6 +118,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 @@ -137,9 +142,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(); @@ -234,6 +242,7 @@ public class ApnEditor extends PreferenceActivity mAuthType.setValueIndex(authVal); } + mProtocol.setValue(mCursor.getString(PROTOCOL_INDEX)); } mName.setSummary(checkNull(mName.getText())); @@ -260,6 +269,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) { @@ -274,6 +305,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; } @@ -396,6 +437,13 @@ public class ApnEditor extends PreferenceActivity values.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(authVal)); } + values.put(Telephony.Carriers.PROTOCOL, checkNotSet(mProtocol.getValue())); + + // Hardcode IPv4 roaming for now until the carriers sort out all the + // billing arrangements. + values.put(Telephony.Carriers.ROAMING_PROTOCOL, + RILConstants.SETUP_DATA_PROTOCOL_IP); + values.put(Telephony.Carriers.TYPE, checkNotSet(mApnType.getText())); values.put(Telephony.Carriers.MCC, mcc); |