Support configuring the protocol in APN settings.
Change-Id: I435061a631bdb2f58935af607abf8cd7c5d252ba
This commit is contained in:
@@ -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>
|
||||||
|
@@ -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 -->
|
||||||
|
@@ -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>
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user