Support configuring the protocol in APN settings.

Change-Id: I435061a631bdb2f58935af607abf8cd7c5d252ba
This commit is contained in:
Lorenzo Colitti
2010-12-29 15:52:41 -08:00
parent 5ac151ccec
commit a7e587fc8d
4 changed files with 68 additions and 1 deletions

View File

@@ -464,6 +464,22 @@
<item>3</item> <item>3</item>
</string-array> </string-array>
<!-- Authentication Types used in APN editor -->
<string-array name="apn_protocol_entries">
<item>IPv4</item>
<item>IPv6</item>
<item>IPv4/IPv6</item>
</string-array>
<string-array translatable="false" name="apn_protocol_values">
<!-- Do not translate. -->
<item>IP</item>
<!-- Do not translate. -->
<item>IPV6</item>
<!-- Do not translate. -->
<item>IPV4V6</item>
</string-array>
<!-- Apps on SD instalaltion location options in ApplicationSettings --> <!-- Apps on SD instalaltion location options in ApplicationSettings -->
<string-array name="app_install_location_entries"> <string-array name="app_install_location_entries">
<item>Internal device storage</item> <item>Internal device storage</item>

View File

@@ -1677,6 +1677,8 @@
<string name="apn_auth_type_pap_chap">PAP or CHAP</string> <string name="apn_auth_type_pap_chap">PAP or CHAP</string>
<!-- Edit access point labels: The type of APN --> <!-- Edit access point labels: The type of APN -->
<string name="apn_type">APN type</string> <string name="apn_type">APN type</string>
<!-- Edit access point labels: The protocol of the APN, e.g., "IPv4", "IPv6", or "IPv4/IPv6". -->
<string name="apn_protocol">APN protocol</string>
<!-- Edit access point screen menu option to delete this APN --> <!-- Edit access point screen menu option to delete this APN -->
<string name="menu_delete">Delete APN</string> <string name="menu_delete">Delete APN</string>
<!-- APNs screen menu option to create a brand spanking new APN --> <!-- APNs screen menu option to create a brand spanking new APN -->

View File

@@ -114,4 +114,11 @@
android:singleLine="true" android:singleLine="true"
android:inputType="textNoSuggestions" android:inputType="textNoSuggestions"
/> />
<ListPreference
android:title="@string/apn_protocol"
android:dialogTitle="@string/apn_protocol"
android:key="apn_protocol"
android:entries="@array/apn_protocol_entries"
android:entryValues="@array/apn_protocol_values"
/>
</PreferenceScreen> </PreferenceScreen>

View File

@@ -48,6 +48,7 @@ public class ApnEditor extends PreferenceActivity
private final static String SAVED_POS = "pos"; private final static String SAVED_POS = "pos";
private final static String KEY_AUTH_TYPE = "auth_type"; 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_DELETE = Menu.FIRST;
private static final int MENU_SAVE = Menu.FIRST + 1; private static final int MENU_SAVE = Menu.FIRST + 1;
@@ -69,6 +70,7 @@ public class ApnEditor extends PreferenceActivity
private EditTextPreference mMmsPort; private EditTextPreference mMmsPort;
private ListPreference mAuthType; private ListPreference mAuthType;
private EditTextPreference mApnType; private EditTextPreference mApnType;
private ListPreference mProtocol;
private String mCurMnc; private String mCurMnc;
private String mCurMcc; private String mCurMcc;
@@ -99,6 +101,7 @@ public class ApnEditor extends PreferenceActivity
Telephony.Carriers.MMSPORT, // 13 Telephony.Carriers.MMSPORT, // 13
Telephony.Carriers.AUTH_TYPE, // 14 Telephony.Carriers.AUTH_TYPE, // 14
Telephony.Carriers.TYPE, // 15 Telephony.Carriers.TYPE, // 15
Telephony.Carriers.PROTOCOL, // 16
}; };
private static final int ID_INDEX = 0; 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 MMSPORT_INDEX = 13;
private static final int AUTH_TYPE_INDEX = 14; private static final int AUTH_TYPE_INDEX = 14;
private static final int TYPE_INDEX = 15; private static final int TYPE_INDEX = 15;
private static final int PROTOCOL_INDEX = 16;
@Override @Override
@@ -139,9 +143,12 @@ public class ApnEditor extends PreferenceActivity
mMnc = (EditTextPreference) findPreference("apn_mnc"); mMnc = (EditTextPreference) findPreference("apn_mnc");
mApnType = (EditTextPreference) findPreference("apn_type"); mApnType = (EditTextPreference) findPreference("apn_type");
mAuthType = (ListPreference) findPreference("auth_type"); mAuthType = (ListPreference) findPreference(KEY_AUTH_TYPE);
mAuthType.setOnPreferenceChangeListener(this); mAuthType.setOnPreferenceChangeListener(this);
mProtocol = (ListPreference) findPreference(KEY_PROTOCOL);
mProtocol.setOnPreferenceChangeListener(this);
mRes = getResources(); mRes = getResources();
final Intent intent = getIntent(); final Intent intent = getIntent();
@@ -238,6 +245,7 @@ public class ApnEditor extends PreferenceActivity
mAuthType.setValue(null); mAuthType.setValue(null);
} }
mProtocol.setValue(mCursor.getString(PROTOCOL_INDEX));
} }
mName.setSummary(checkNull(mName.getText())); mName.setSummary(checkNull(mName.getText()));
@@ -264,6 +272,28 @@ public class ApnEditor extends PreferenceActivity
} else { } else {
mAuthType.setSummary(sNotSet); 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) { public boolean onPreferenceChange(Preference preference, Object newValue) {
@@ -278,6 +308,16 @@ public class ApnEditor extends PreferenceActivity
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
return false; 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; return true;
} }
@@ -389,6 +429,8 @@ public class ApnEditor extends PreferenceActivity
values.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(authVal)); 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.TYPE, checkNotSet(mApnType.getText()));
values.put(Telephony.Carriers.MCC, mcc); values.put(Telephony.Carriers.MCC, mcc);