Update preferred networks selection menu
Move "Use 2G Only" checkbox to "Network Mode" Menu
This menu consists of the followings in GSM Phone:
- 4G/LTE
- 3G
- 2G
4G/LTE means it's preferred, falling back to 3G, falling back to 2G.
3G means it's preferred, falling back to 2G.
2G means 2G only.
If config_prefer_2g is false, "2G Only" removes from Menu.
To use "LTE" menu, set config_enabled_lte true as mcc/mnc.
That means config_enabled_lte is false as default.
If set config_show4GForLTE true in SystemUI, display 4G instead of LTE.
In case of CDMA Phone with LTE,
- LTE
- 3G
- 1x
- Global
For (global) roaming of cdma, should set config_show_cdma true as mcc/mnc.
Bug: 10332749, 10783369
Change-Id: I74a9096f528bcd2a9a1162b53194ece653243bf7
diff --git a/res/values/config.xml b/res/values/config.xml
index 5146b1f..9bfac9a 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -119,6 +119,10 @@
<bool name="config_apn_expand" translatable="false">true</bool>
<bool name="config_operator_selection_expand" translatable="false">true</bool>
<bool name="config_prefer_2g" translatable="false">true</bool>
+ <!-- Show enabled lte option for lte device -->
+ <bool name="config_enabled_lte" translatable="false">false</bool>
+ <!-- Show cdma auto network mode in (glabal) roaming -->
+ <bool name="config_show_cdma" translatable="false">false</bool>
<!-- Package name for the default in-call UI and dialer [DO NOT TRANSLATE] -->
<string name="ui_default_package" translatable="false">com.android.dialer</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index f102cb7..ad876fa 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -516,10 +516,63 @@
<string name="multi_category_enable">Multi-category enabled</string>
<string name="multi_category_disable">Multi-category disabled</string>
- <!-- Mobile network settings screen, setting option name -->
- <string name="prefer_2g">Use only 2G networks</string>
- <!-- Mobile network settings screen, setting summary text -->
- <string name="prefer_2g_summary">Saves battery</string>
+ <string-array name="enabled_networks_except_gsm_choices" translatable="false">
+ <item>LTE</item>
+ <item>3G</item>
+ </string-array>
+ <string-array name="enabled_networks_except_gsm_4g_choices" translatable="false">
+ <item>4G</item>
+ <item>3G</item>
+ </string-array>
+ <string-array name="enabled_networks_except_gsm_values" translatable="false">
+ <item>"9"</item>
+ <item>"0"</item>
+ </string-array>
+
+ <string-array name="enabled_networks_except_lte_choices" translatable="false">
+ <item>3G</item>
+ <item>2G</item>
+ </string-array>
+ <string-array name="enabled_networks_except_lte_values" translatable="false">
+ <item>"0"</item>
+ <item>"1"</item>
+ </string-array>
+
+ <string-array name="enabled_networks_except_gsm_lte_choices" translatable="false">
+ <item>3G</item>
+ </string-array>
+ <string-array name="enabled_networks_except_gsm_lte_values" translatable="false">
+ <item>"0"</item>
+ </string-array>
+
+ <string-array name="enabled_networks_choices" translatable="false">
+ <item>LTE</item>
+ <item>3G</item>
+ <item>2G</item>
+ </string-array>
+ <string-array name="enabled_networks_4g_choices" translatable="false">
+ <item>4G</item>
+ <item>3G</item>
+ <item>2G</item>
+ </string-array>
+ <string-array name="enabled_networks_values" translatable="false">
+ <item>"9"</item>
+ <item>"0"</item>
+ <item>"1"</item>
+ </string-array>
+
+ <string-array name="enabled_networks_cdma_choices" translatable="false">
+ <item>LTE</item>
+ <item>3G</item>
+ <item>1x</item>
+ <item>Global</item>
+ </string-array>
+ <string-array name="enabled_networks_cdma_values" translatable="false">
+ <item>"8"</item>
+ <item>"4"</item>
+ <item>"5"</item>
+ <item>"10"</item>
+ </string-array>
<!-- CDMA System select strings -->
<!-- Mobile network settings screen, setting option name -->
diff --git a/res/xml/gsm_umts_options.xml b/res/xml/gsm_umts_options.xml
index afdd0d3..df7f2d5 100644
--- a/res/xml/gsm_umts_options.xml
+++ b/res/xml/gsm_umts_options.xml
@@ -28,12 +28,6 @@
</PreferenceScreen>
- <com.android.phone.Use2GOnlyCheckBoxPreference
- android:key="button_prefer_2g_key"
- android:title="@string/prefer_2g"
- android:persistent="false"
- android:summary="@string/prefer_2g_summary"/>
-
<PreferenceScreen
android:key="button_carrier_sel_key"
android:title="@string/networks"
diff --git a/res/xml/network_setting.xml b/res/xml/network_setting.xml
index 7fd00fc..00430e8 100644
--- a/res/xml/network_setting.xml
+++ b/res/xml/network_setting.xml
@@ -43,4 +43,12 @@
android:entryValues="@array/preferred_network_mode_values"
android:dialogTitle="@string/preferred_network_mode_dialogtitle" />
+ <ListPreference
+ android:key="enabled_networks_key"
+ android:title="@string/preferred_network_mode_title"
+ android:summary="@string/preferred_network_mode_summary"
+ android:entries="@array/enabled_networks_choices"
+ android:entryValues="@array/enabled_networks_values"
+ android:dialogTitle="@string/preferred_network_mode_dialogtitle" />
+
</PreferenceScreen>
diff --git a/src/com/android/phone/GsmUmtsOptions.java b/src/com/android/phone/GsmUmtsOptions.java
index 1f1ac4a..6829dec 100644
--- a/src/com/android/phone/GsmUmtsOptions.java
+++ b/src/com/android/phone/GsmUmtsOptions.java
@@ -16,7 +16,6 @@
package com.android.phone;
-import android.preference.CheckBoxPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen;
@@ -34,11 +33,9 @@
private PreferenceScreen mButtonAPNExpand;
private PreferenceScreen mButtonOperatorSelectionExpand;
- private CheckBoxPreference mButtonPrefer2g;
private static final String BUTTON_APN_EXPAND_KEY = "button_apn_key";
private static final String BUTTON_OPERATOR_SELECTION_EXPAND_KEY = "button_carrier_sel_key";
- private static final String BUTTON_PREFER_2G_KEY = "button_prefer_2g_key";
private PreferenceActivity mPrefActivity;
private PreferenceScreen mPrefScreen;
@@ -53,12 +50,10 @@
mButtonAPNExpand = (PreferenceScreen) mPrefScreen.findPreference(BUTTON_APN_EXPAND_KEY);
mButtonOperatorSelectionExpand =
(PreferenceScreen) mPrefScreen.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY);
- mButtonPrefer2g = (CheckBoxPreference) mPrefScreen.findPreference(BUTTON_PREFER_2G_KEY);
if (PhoneFactory.getDefaultPhone().getPhoneType() != PhoneConstants.PHONE_TYPE_GSM) {
log("Not a GSM phone");
mButtonAPNExpand.setEnabled(false);
mButtonOperatorSelectionExpand.setEnabled(false);
- mButtonPrefer2g.setEnabled(false);
} else {
log("Not a CDMA phone");
Resources res = mPrefActivity.getResources();
@@ -74,9 +69,6 @@
mPrefScreen.removePreference(mPrefScreen
.findPreference(BUTTON_OPERATOR_SELECTION_EXPAND_KEY));
}
- if (!res.getBoolean(R.bool.config_prefer_2g)) {
- mPrefScreen.removePreference(mPrefScreen.findPreference(BUTTON_PREFER_2G_KEY));
- }
if (res.getBoolean(R.bool.csp_enabled)) {
if (PhoneFactory.getDefaultPhone().isCspPlmnEnabled()) {
@@ -92,10 +84,6 @@
}
public boolean preferenceTreeClick(Preference preference) {
- if (preference.getKey().equals(BUTTON_PREFER_2G_KEY)) {
- log("preferenceTreeClick: return true");
- return true;
- }
log("preferenceTreeClick: return false");
return false;
}
diff --git a/src/com/android/phone/MobileNetworkSettings.java b/src/com/android/phone/MobileNetworkSettings.java
index 66824dc..7e43a55 100644
--- a/src/com/android/phone/MobileNetworkSettings.java
+++ b/src/com/android/phone/MobileNetworkSettings.java
@@ -26,6 +26,7 @@
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.AsyncResult;
@@ -60,7 +61,7 @@
// debug data
private static final String LOG_TAG = "NetworkSettings";
- private static final boolean DBG = false;
+ private static final boolean DBG = true;
public static final int REQUEST_CODE_EXIT_ECM = 17;
//String keys for preference lookup
@@ -68,6 +69,7 @@
private static final String BUTTON_PREFERED_NETWORK_MODE = "preferred_network_mode_key";
private static final String BUTTON_ROAMING_KEY = "button_roaming_key";
private static final String BUTTON_CDMA_LTE_DATA_SERVICE_KEY = "cdma_lte_data_service_key";
+ private static final String BUTTON_ENABLED_NETWORKS_KEY = "enabled_networks_key";
static final int preferredNetworkMode = Phone.PREFERRED_NT_MODE;
@@ -78,6 +80,7 @@
//UI objects
private ListPreference mButtonPreferredNetworkMode;
+ private ListPreference mButtonEnabledNetworks;
private CheckBoxPreference mButtonDataRoam;
private CheckBoxPreference mButtonDataEnabled;
private Preference mLteDataServicePref;
@@ -93,7 +96,7 @@
CdmaOptions mCdmaOptions;
private Preference mClickedPreference;
-
+ private boolean mShow4GForLTE;
//This is a method implemented for DialogInterface.OnClickListener.
// Used to dismiss the dialogs when they come up.
@@ -189,6 +192,12 @@
android.util.Log.e(LOG_TAG, "Missing SETUP_PREPAID_DATA_SERVICE_URL");
}
return true;
+ } else if (preference == mButtonEnabledNetworks) {
+ int settingsNetworkMode = android.provider.Settings.Global.getInt(mPhone.getContext().
+ getContentResolver(), android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
+ preferredNetworkMode);
+ mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode));
+ return true;
} else {
// if the button is anything but the simple toggle preference,
// we'll need to disable all preferences to reject all click
@@ -208,6 +217,16 @@
mPhone = PhoneGlobals.getPhone();
mHandler = new MyHandler();
+ try {
+ Context con = createPackageContext("com.android.systemui", 0);
+ int id = con.getResources().getIdentifier("config_show4GForLTE",
+ "bool", "com.android.systemui");
+ mShow4GForLTE = con.getResources().getBoolean(id);
+ } catch (NameNotFoundException e) {
+ loge("NameNotFoundException for show4GFotLTE");
+ mShow4GForLTE = false;
+ }
+
//get UI object references
PreferenceScreen prefSet = getPreferenceScreen();
@@ -215,10 +234,14 @@
mButtonDataRoam = (CheckBoxPreference) prefSet.findPreference(BUTTON_ROAMING_KEY);
mButtonPreferredNetworkMode = (ListPreference) prefSet.findPreference(
BUTTON_PREFERED_NETWORK_MODE);
+ mButtonEnabledNetworks = (ListPreference) prefSet.findPreference(
+ BUTTON_ENABLED_NETWORKS_KEY);
+
mLteDataServicePref = prefSet.findPreference(BUTTON_CDMA_LTE_DATA_SERVICE_KEY);
boolean isLteOnCdma = mPhone.getLteOnCdmaMode() == PhoneConstants.LTE_ON_CDMA_TRUE;
if (getResources().getBoolean(R.bool.world_phone) == true) {
+ prefSet.removePreference(mButtonEnabledNetworks);
// set the listener for the mButtonPreferredNetworkMode list preference so we can issue
// change Preferred Network Mode.
mButtonPreferredNetworkMode.setOnPreferenceChangeListener(this);
@@ -234,12 +257,55 @@
prefSet.removePreference(mButtonPreferredNetworkMode);
int phoneType = mPhone.getPhoneType();
if (phoneType == PhoneConstants.PHONE_TYPE_CDMA) {
+ if (isLteOnCdma) {
+ mButtonEnabledNetworks.setEntries(
+ R.array.enabled_networks_cdma_choices);
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_cdma_values);
+ }
mCdmaOptions = new CdmaOptions(this, prefSet, mPhone);
} else if (phoneType == PhoneConstants.PHONE_TYPE_GSM) {
+ if (!getResources().getBoolean(R.bool.config_prefer_2g)
+ && !getResources().getBoolean(R.bool.config_enabled_lte)) {
+ mButtonEnabledNetworks.setEntries(
+ R.array.enabled_networks_except_gsm_lte_choices);
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_except_gsm_lte_values);
+ } else if (!getResources().getBoolean(R.bool.config_prefer_2g)) {
+ int select = (mShow4GForLTE == true) ?
+ R.array.enabled_networks_except_gsm_4g_choices
+ : R.array.enabled_networks_except_gsm_choices;
+ mButtonEnabledNetworks.setEntries(select);
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_except_gsm_values);
+ } else if (!getResources().getBoolean(R.bool.config_enabled_lte)) {
+ mButtonEnabledNetworks.setEntries(
+ R.array.enabled_networks_except_lte_choices);
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_except_lte_values);
+ } else if (isLteOnCdma && getResources().getBoolean(R.bool.config_show_cdma)) {
+ mButtonEnabledNetworks.setEntries(
+ R.array.enabled_networks_cdma_choices);
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_cdma_values);
+ } else {
+ int select = (mShow4GForLTE == true) ? R.array.enabled_networks_4g_choices
+ : R.array.enabled_networks_choices;
+ mButtonEnabledNetworks.setEntries(select);
+ mButtonEnabledNetworks.setEntryValues(
+ R.array.enabled_networks_values);
+ }
mGsmUmtsOptions = new GsmUmtsOptions(this, prefSet);
} else {
throw new IllegalStateException("Unexpected phone type: " + phoneType);
}
+ mButtonEnabledNetworks.setOnPreferenceChangeListener(this);
+ int settingsNetworkMode = android.provider.Settings.Global.getInt(
+ mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
+ preferredNetworkMode);
+ if (DBG) log("settingsNetworkMode: " + settingsNetworkMode);
+ mButtonEnabledNetworks.setValue(Integer.toString(settingsNetworkMode));
}
final boolean missingDataServiceUrl = TextUtils.isEmpty(
@@ -279,6 +345,11 @@
mPhone.getPreferredNetworkType(mHandler.obtainMessage(
MyHandler.MESSAGE_GET_PREFERRED_NETWORK_TYPE));
}
+
+ if (getPreferenceScreen().findPreference(BUTTON_ENABLED_NETWORKS_KEY) != null) {
+ mPhone.getPreferredNetworkType(mHandler.obtainMessage(
+ MyHandler.MESSAGE_GET_PREFERRED_NETWORK_TYPE));
+ }
}
@Override
@@ -338,6 +409,42 @@
mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
.obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
}
+ } else if (preference == mButtonEnabledNetworks) {
+ mButtonEnabledNetworks.setValue((String) objValue);
+ int buttonNetworkMode;
+ buttonNetworkMode = Integer.valueOf((String) objValue).intValue();
+ if (DBG) log("buttonNetworkMode: " + buttonNetworkMode);
+ int settingsNetworkMode = android.provider.Settings.Global.getInt(
+ mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE, preferredNetworkMode);
+ if (buttonNetworkMode != settingsNetworkMode) {
+ int modemNetworkMode;
+ // if new mode is invalid ignore it
+ switch (buttonNetworkMode) {
+ case Phone.NT_MODE_WCDMA_PREF:
+ case Phone.NT_MODE_GSM_ONLY:
+ case Phone.NT_MODE_LTE_GSM_WCDMA:
+ case Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA:
+ case Phone.NT_MODE_CDMA:
+ case Phone.NT_MODE_CDMA_NO_EVDO:
+ case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+ // This is one of the modes we recognize
+ modemNetworkMode = buttonNetworkMode;
+ break;
+ default:
+ loge("Invalid Network Mode (" + buttonNetworkMode + ") chosen. Ignore.");
+ return true;
+ }
+
+ UpdateEnabledNetworksSummary(buttonNetworkMode);
+
+ android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
+ buttonNetworkMode );
+ //Set the modem network mode
+ mPhone.setPreferredNetworkType(modemNetworkMode, mHandler
+ .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
+ }
}
// always let the preference setting proceed.
@@ -423,8 +530,10 @@
}
UpdatePreferredNetworkModeSummary(modemNetworkMode);
+ UpdateEnabledNetworksSummary(modemNetworkMode);
// changes the mButtonPreferredNetworkMode accordingly to modemNetworkMode
mButtonPreferredNetworkMode.setValue(Integer.toString(modemNetworkMode));
+ mButtonEnabledNetworks.setValue(Integer.toString(modemNetworkMode));
} else {
if (DBG) log("handleGetPreferredNetworkTypeResponse: else: reset to default");
resetNetworkModeToDefault();
@@ -441,6 +550,11 @@
android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
networkMode );
+ networkMode = Integer.valueOf(
+ mButtonEnabledNetworks.getValue()).intValue();
+ android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
+ android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
+ networkMode );
} else {
mPhone.getPreferredNetworkType(obtainMessage(MESSAGE_GET_PREFERRED_NETWORK_TYPE));
}
@@ -449,6 +563,7 @@
private void resetNetworkModeToDefault() {
//set the mButtonPreferredNetworkMode
mButtonPreferredNetworkMode.setValue(Integer.toString(preferredNetworkMode));
+ mButtonEnabledNetworks.setValue(Integer.toString(preferredNetworkMode));
//set the Settings.System
android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
android.provider.Settings.Global.PREFERRED_NETWORK_MODE,
@@ -528,6 +643,36 @@
}
}
+ private void UpdateEnabledNetworksSummary(int NetworkMode) {
+ switch(NetworkMode) {
+ case Phone.NT_MODE_WCDMA_PREF:
+ mButtonEnabledNetworks.setSummary("3G");
+ break;
+ case Phone.NT_MODE_GSM_ONLY:
+ mButtonEnabledNetworks.setSummary("2G");
+ break;
+ case Phone.NT_MODE_LTE_GSM_WCDMA:
+ final String show4GForLTE = (mShow4GForLTE == true) ? "4G" : "LTE";
+ mButtonEnabledNetworks.setSummary(show4GForLTE);
+ break;
+ case Phone.NT_MODE_LTE_CDMA_AND_EVDO:
+ mButtonEnabledNetworks.setSummary("LTE");
+ break;
+ case Phone.NT_MODE_CDMA:
+ case Phone.NT_MODE_GLOBAL:
+ mButtonEnabledNetworks.setSummary("3G");
+ break;
+ case Phone.NT_MODE_CDMA_NO_EVDO:
+ mButtonEnabledNetworks.setSummary("1X");
+ break;
+ case Phone.NT_MODE_LTE_CMDA_EVDO_GSM_WCDMA:
+ mButtonEnabledNetworks.setSummary("Global");
+ break;
+ default:
+ mButtonEnabledNetworks.setSummary(R.string.preferred_network_mode_summary);
+ }
+ }
+
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode) {
diff --git a/src/com/android/phone/Use2GOnlyCheckBoxPreference.java b/src/com/android/phone/Use2GOnlyCheckBoxPreference.java
deleted file mode 100644
index a5a7a67..0000000
--- a/src/com/android/phone/Use2GOnlyCheckBoxPreference.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.phone;
-
-import android.content.Context;
-import android.os.AsyncResult;
-import android.os.Handler;
-import android.os.Message;
-import android.os.SystemProperties;
-import android.preference.CheckBoxPreference;
-import android.util.AttributeSet;
-import android.util.Log;
-
-import com.android.internal.telephony.Phone;
-
-public class Use2GOnlyCheckBoxPreference extends CheckBoxPreference {
- private static final String LOG_TAG = "Use2GOnlyCheckBoxPreference";
-
- private Phone mPhone;
- private MyHandler mHandler;
-
- public Use2GOnlyCheckBoxPreference(Context context) {
- this(context, null);
- }
-
- public Use2GOnlyCheckBoxPreference(Context context, AttributeSet attrs) {
- this(context, attrs,com.android.internal.R.attr.checkBoxPreferenceStyle);
- }
-
- public Use2GOnlyCheckBoxPreference(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- mPhone = PhoneGlobals.getPhone();
- mHandler = new MyHandler();
- mPhone.getPreferredNetworkType(
- mHandler.obtainMessage(MyHandler.MESSAGE_GET_PREFERRED_NETWORK_TYPE));
- }
-
- private int getDefaultNetworkMode() {
- int mode = SystemProperties.getInt("ro.telephony.default_network",
- Phone.PREFERRED_NT_MODE);
- Log.i(LOG_TAG, "getDefaultNetworkMode: mode=" + mode);
- return mode;
- }
-
- @Override
- protected void onClick() {
- super.onClick();
-
- int networkType = isChecked() ? Phone.NT_MODE_GSM_ONLY : getDefaultNetworkMode();
- Log.i(LOG_TAG, "set preferred network type="+networkType);
- android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
- android.provider.Settings.Global.PREFERRED_NETWORK_MODE, networkType);
- mPhone.setPreferredNetworkType(networkType, mHandler
- .obtainMessage(MyHandler.MESSAGE_SET_PREFERRED_NETWORK_TYPE));
- }
-
- private class MyHandler extends Handler {
-
- static final int MESSAGE_GET_PREFERRED_NETWORK_TYPE = 0;
- static final int MESSAGE_SET_PREFERRED_NETWORK_TYPE = 1;
-
- @Override
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case MESSAGE_GET_PREFERRED_NETWORK_TYPE:
- handleGetPreferredNetworkTypeResponse(msg);
- break;
-
- case MESSAGE_SET_PREFERRED_NETWORK_TYPE:
- handleSetPreferredNetworkTypeResponse(msg);
- break;
- }
- }
-
- private void handleGetPreferredNetworkTypeResponse(Message msg) {
- AsyncResult ar = (AsyncResult) msg.obj;
-
- if (ar.exception == null) {
- int type = ((int[])ar.result)[0];
- if (type != Phone.NT_MODE_GSM_ONLY) {
- // Back to default
- type = getDefaultNetworkMode();
- }
- Log.i(LOG_TAG, "get preferred network type="+type);
- setChecked(type == Phone.NT_MODE_GSM_ONLY);
- android.provider.Settings.Global.putInt(mPhone.getContext().getContentResolver(),
- android.provider.Settings.Global.PREFERRED_NETWORK_MODE, type);
- } else {
- // Weird state, disable the setting
- Log.i(LOG_TAG, "get preferred network type, exception="+ar.exception);
- setEnabled(false);
- }
- }
-
- private void handleSetPreferredNetworkTypeResponse(Message msg) {
- AsyncResult ar = (AsyncResult) msg.obj;
-
- if (ar.exception != null) {
- // Yikes, error, disable the setting
- setEnabled(false);
- // Set UI to current state
- Log.i(LOG_TAG, "set preferred network type, exception=" + ar.exception);
- mPhone.getPreferredNetworkType(obtainMessage(MESSAGE_GET_PREFERRED_NETWORK_TYPE));
- } else {
- Log.i(LOG_TAG, "set preferred network type done");
- }
- }
- }
-}