1afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project/* 24e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh * Copyright (C) 2009 The Android Open Source Project 3afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 4afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * you may not use this file except in compliance with the License. 6afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * You may obtain a copy of the License at 7afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 8afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * 10afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * See the License for the specific language governing permissions and 14afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project * limitations under the License. 15afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project */ 16afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 17afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectpackage com.android.settings; 18afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 19fe21d9aaa8a8c7f8a759805ba021b59dd821e4feGeoffrey Borggaard 20d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasaniimport android.app.Activity; 215d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.app.AlertDialog; 225d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.app.Dialog; 2305411893af4afc4bf7b8530d787c5b9e0bbeed39Oscar Montemayorimport android.app.admin.DevicePolicyManager; 24d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensenimport android.content.ActivityNotFoundException; 25b90452f3d26201ea6a231f2150204241e66cd3fbChia-chi Yehimport android.content.Context; 265d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.content.DialogInterface; 2771cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhangimport android.content.Intent; 28167d7186a73b1126a8baa4fd3c8b9156b2712c60Irfan Sheriffimport android.content.pm.PackageManager; 295d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.content.res.Resources; 30c4764d24837cf297440f0ee97fe8adb943c56fe0Robert Greenwaltimport android.net.ConnectivityManager; 315d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.net.NetworkInfo; 32d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensenimport android.net.Uri; 33a57eacef3c7d267a534bb1d01471a9a9c12471ceNick Pellyimport android.nfc.NfcAdapter; 34dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport android.nfc.NfcManager; 35afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Projectimport android.os.Bundle; 3671cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhangimport android.os.SystemProperties; 379e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shankaimport android.os.UserHandle; 38ee27b9de8f2ab17d50b90dd8c13546aebb4e9fc1Julia Reynoldsimport android.os.UserManager; 39dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport android.provider.SearchIndexableResource; 4083bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwoodimport android.provider.Settings; 4139b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v14.preference.SwitchPreference; 4239b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference; 4339b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.PreferenceScreen; 445d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.telephony.TelephonyManager; 455d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.text.TextUtils; 465d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Savilleimport android.util.Log; 474e9f04de0a6511086f47479addb53b84c3bb9763David Braun 484ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiakimport com.android.ims.ImsManager; 499d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wrenimport com.android.internal.logging.MetricsProto.MetricsEvent; 50e78c1879058571c00879f0d3e756951302adf513Gilles Debunneimport com.android.internal.telephony.TelephonyIntents; 51e78c1879058571c00879f0d3e756951302adf513Gilles Debunneimport com.android.internal.telephony.TelephonyProperties; 52e78c1879058571c00879f0d3e756951302adf513Gilles Debunneimport com.android.settings.nfc.NfcEnabler; 53dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport com.android.settings.search.BaseSearchIndexProvider; 54dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport com.android.settings.search.Indexable; 558b8683068fd95010104acc30781a9cfa294f2545Sudheer Shankaimport com.android.settingslib.RestrictedLockUtils; 56682a916836f5e108289a70579f671f9d4a880993Sudheer Shankaimport com.android.settingslib.RestrictedPreference; 5773a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monk 58dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport java.util.ArrayList; 59dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport java.util.Arrays; 60ca060e3e98c561cad5e28603200810ca70ae4869Fyodor Kupolovimport java.util.Collections; 61dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglioimport java.util.List; 624e9f04de0a6511086f47479addb53b84c3bb9763David Braun 6373a2496d316cb9a8dc0020c245bc61f766b7f7c2Jason Monkpublic class WirelessSettings extends SettingsPreferenceFragment implements Indexable { 644929e912c00cca290488b3dbbdb645fffe8d2443Robert Greenwalt private static final String TAG = "WirelessSettings"; 65afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 66afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private static final String KEY_TOGGLE_AIRPLANE = "toggle_airplane"; 67ad50ba065d31f3d8ec53c512b6ba5cf94d15d1e3Nick Pelly private static final String KEY_TOGGLE_NFC = "toggle_nfc"; 687c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun private static final String KEY_WIMAX_SETTINGS = "wimax_settings"; 693d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton private static final String KEY_ANDROID_BEAM_SETTINGS = "android_beam_settings"; 7083bcc98af19597a213a8d174e8f1b47453d513ceMike Lockwood private static final String KEY_VPN_SETTINGS = "vpn_settings"; 71c4764d24837cf297440f0ee97fe8adb943c56fe0Robert Greenwalt private static final String KEY_TETHER_SETTINGS = "tether_settings"; 7205411893af4afc4bf7b8530d787c5b9e0bbeed39Oscar Montemayor private static final String KEY_PROXY_SETTINGS = "proxy_settings"; 730f85c48d6c77e811f4d949503f0aa3efd908834dAmith Yamasani private static final String KEY_MOBILE_NETWORK_SETTINGS = "mobile_network_settings"; 745d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private static final String KEY_MANAGE_MOBILE_PLAN = "manage_mobile_plan"; 754ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak private static final String KEY_WFC_SETTINGS = "wifi_calling_settings"; 76e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling private static final String KEY_NETWORK_RESET = "network_reset"; 77ad50ba065d31f3d8ec53c512b6ba5cf94d15d1e3Nick Pelly 7871cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang public static final String EXIT_ECM_RESULT = "exit_ecm_result"; 7971cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang public static final int REQUEST_CODE_EXIT_ECM = 1; 80afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 81afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project private AirplaneModeEnabler mAirplaneModeEnabler; 82e3bced2cdaf70812f658c45c170e4943ed79dfafFabrice Di Meglio private SwitchPreference mAirplaneModePreference; 83ad50ba065d31f3d8ec53c512b6ba5cf94d15d1e3Nick Pelly private NfcEnabler mNfcEnabler; 84bb4bdc29d64714546255681fcd9c9d92efa9328fMartijn Coenen private NfcAdapter mNfcAdapter; 8571cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang 865d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private ConnectivityManager mCm; 875d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private TelephonyManager mTm; 8817c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn private PackageManager mPm; 89ee27b9de8f2ab17d50b90dd8c13546aebb4e9fc1Julia Reynolds private UserManager mUm; 905d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 915d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private static final int MANAGE_MOBILE_PLAN_DIALOG_ID = 1; 925d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage"; 935d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 944ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak private PreferenceScreen mButtonWfc; 954e9f04de0a6511086f47479addb53b84c3bb9763David Braun 9671cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang /** 9771cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang * Invoked on each preference click in this hierarchy, overrides 98263bcc8b732dbb47d3ce63904e0e05191fabbad6Fabrice Di Meglio * PreferenceFragment's implementation. Used to make sure we track the 9971cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang * preference click events. 10071cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang */ 10171cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang @Override 10239b467482d1bf256a111c757e9b7621c6f523271Jason Monk public boolean onPreferenceTreeClick(Preference preference) { 1035d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville log("onPreferenceTreeClick: preference=" + preference); 1044e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh if (preference == mAirplaneModePreference && Boolean.parseBoolean( 1054e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE))) { 10671cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang // In ECM mode launch ECM app dialog 10771cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang startActivityForResult( 10871cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang new Intent(TelephonyIntents.ACTION_SHOW_NOTICE_ECM_BLOCK_OTHERS, null), 10971cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang REQUEST_CODE_EXIT_ECM); 11071cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang return true; 1115d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } else if (preference == findPreference(KEY_MANAGE_MOBILE_PLAN)) { 1125d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville onManageMobilePlanClick(); 11371cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang } 1144e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh // Let the intents be launched by the Preference manager 11539b467482d1bf256a111c757e9b7621c6f523271Jason Monk return super.onPreferenceTreeClick(preference); 11671cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang } 117b90452f3d26201ea6a231f2150204241e66cd3fbChia-chi Yeh 1185d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private String mManageMobilePlanMessage; 1195d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville public void onManageMobilePlanClick() { 1205d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville log("onManageMobilePlanClick:"); 1215d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = null; 1225d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville Resources resources = getActivity().getResources(); 1235d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 1246953eea28b64bc68f6c7a196380e3dcf9b110f55Paul Jensen NetworkInfo ni = mCm.getActiveNetworkInfo(); 1255d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (mTm.hasIccCard() && (ni != null)) { 12617c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn // Check for carrier apps that can handle provisioning first 12717c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn Intent provisioningIntent = new Intent(TelephonyIntents.ACTION_CARRIER_SETUP); 128ff9f67dddd97756dffe2059aa186acd29fc67527Diego Pontoriero List<String> carrierPackages = 129be7adcc9894f34bf4f1721a7a9a7b6354cadb26dDiego Pontoriero mTm.getCarrierPackageNamesForIntent(provisioningIntent); 130ff9f67dddd97756dffe2059aa186acd29fc67527Diego Pontoriero if (carrierPackages != null && !carrierPackages.isEmpty()) { 131ff9f67dddd97756dffe2059aa186acd29fc67527Diego Pontoriero if (carrierPackages.size() != 1) { 132ff9f67dddd97756dffe2059aa186acd29fc67527Diego Pontoriero Log.w(TAG, "Multiple matching carrier apps found, launching the first."); 133ff9f67dddd97756dffe2059aa186acd29fc67527Diego Pontoriero } 134ff9f67dddd97756dffe2059aa186acd29fc67527Diego Pontoriero provisioningIntent.setPackage(carrierPackages.get(0)); 13517c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn startActivity(provisioningIntent); 13617c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn return; 13717c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn } 13817c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn 1395d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville // Get provisioning URL 1404929e912c00cca290488b3dbbdb645fffe8d2443Robert Greenwalt String url = mCm.getMobileProvisioningUrl(); 1415d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (!TextUtils.isEmpty(url)) { 142d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen Intent intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, 143d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen Intent.CATEGORY_APP_BROWSER); 144d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen intent.setData(Uri.parse(url)); 145d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | 146d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen Intent.FLAG_ACTIVITY_NEW_TASK); 147d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen try { 148d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen startActivity(intent); 149d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen } catch (ActivityNotFoundException e) { 150d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen Log.w(TAG, "onManageMobilePlanClick: startActivity failed" + e); 151d96c5fc70a7b595358cf020dcbbba559eb50d4f1Paul Jensen } 1525d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } else { 1535d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville // No provisioning URL 1545d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville String operatorName = mTm.getSimOperatorName(); 1555d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (TextUtils.isEmpty(operatorName)) { 1565d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville // Use NetworkOperatorName as second choice in case there is no 1575d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville // SPN (Service Provider Name on the SIM). Such as with T-mobile. 1585d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville operatorName = mTm.getNetworkOperatorName(); 1595d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (TextUtils.isEmpty(operatorName)) { 1605d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = resources.getString( 1615d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville R.string.mobile_unknown_sim_operator); 1625d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } else { 1635d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = resources.getString( 1645d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville R.string.mobile_no_provisioning_url, operatorName); 1655d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1665d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } else { 1675d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = resources.getString( 1685d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville R.string.mobile_no_provisioning_url, operatorName); 1695d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1705d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1715d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } else if (mTm.hasIccCard() == false) { 1725d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville // No sim card 1735d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = resources.getString(R.string.mobile_insert_sim_card); 1745d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } else { 1755d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville // NetworkInfo is null, there is no connection 1765d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = resources.getString(R.string.mobile_connect_to_internet); 1775d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1785d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (!TextUtils.isEmpty(mManageMobilePlanMessage)) { 1795d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville log("onManageMobilePlanClick: message=" + mManageMobilePlanMessage); 1805d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID); 1815d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1825d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1835d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 1845d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville @Override 1855d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville public Dialog onCreateDialog(int dialogId) { 1865d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville log("onCreateDialog: dialogId=" + dialogId); 1875d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville switch (dialogId) { 1885d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville case MANAGE_MOBILE_PLAN_DIALOG_ID: 1895d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville return new AlertDialog.Builder(getActivity()) 1905d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville .setMessage(mManageMobilePlanMessage) 1915d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville .setCancelable(false) 1925d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville .setPositiveButton(com.android.internal.R.string.ok, 1935d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville new DialogInterface.OnClickListener() { 1945d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville @Override 1955d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville public void onClick(DialogInterface dialog, int id) { 1965d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville log("MANAGE_MOBILE_PLAN_DIALOG.onClickListener id=" + id); 1975d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = null; 1985d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 1995d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville }) 2005d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville .create(); 2015d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 2025d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville return super.onCreateDialog(dialogId); 2035d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 2045d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 2055d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville private void log(String s) { 2065d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville Log.d(TAG, s); 2075d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 2085d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 209afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 2108a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren protected int getMetricsCategory() { 2119d1bfd1e8de6e46137a9571507c03526880d6a46Chris Wren return MetricsEvent.WIRELESS; 2128a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren } 2138a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren 2148a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren @Override 215d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onCreate(Bundle savedInstanceState) { 216afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onCreate(savedInstanceState); 2175d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (savedInstanceState != null) { 2185d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mManageMobilePlanMessage = savedInstanceState.getString(SAVED_MANAGE_MOBILE_PLAN_MSG); 2195d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 2205d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville log("onCreate: mManageMobilePlanMessage=" + mManageMobilePlanMessage); 2215d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 2225d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 2235d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville mTm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 22417c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn mPm = getPackageManager(); 225ee27b9de8f2ab17d50b90dd8c13546aebb4e9fc1Julia Reynolds mUm = (UserManager) getSystemService(Context.USER_SERVICE); 226afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 227afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project addPreferencesFromResource(R.xml.wireless_settings); 228afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project 2296f03829e746aa3f505d71723001a7f84a806452fXiaohui Chen final boolean isAdmin = mUm.isAdminUser(); 2309627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani 231d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani final Activity activity = getActivity(); 232e3bced2cdaf70812f658c45c170e4943ed79dfafFabrice Di Meglio mAirplaneModePreference = (SwitchPreference) findPreference(KEY_TOGGLE_AIRPLANE); 2334325f8080888bd3b15246f5bbd9db878aced030cFabrice Di Meglio SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC); 234682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka RestrictedPreference androidBeam = (RestrictedPreference) findPreference( 235682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka KEY_ANDROID_BEAM_SETTINGS); 2364e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh 237e78c1879058571c00879f0d3e756951302adf513Gilles Debunne mAirplaneModeEnabler = new AirplaneModeEnabler(activity, mAirplaneModePreference); 2383d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam); 239936e3faae11441fad05bf244fa44a29515edd1d8Irfan Sheriff 2403e7e2c57d4074d707161cea0736678311ff5b22ePavel Zhamaitsiak mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS); 2414ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak 2426a5929b086a61a955a4a2f43f5fa251e8754ff4aChristopher Tate String toggleable = Settings.Global.getString(activity.getContentResolver(), 2436a5929b086a61a955a4a2f43f5fa251e8754ff4aChristopher Tate Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS); 2444e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh 2457c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun //enable/disable wimax depending on the value in config.xml 2466f03829e746aa3f505d71723001a7f84a806452fXiaohui Chen final boolean isWimaxEnabled = isAdmin && this.getResources().getBoolean( 2477c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun com.android.internal.R.bool.config_wimaxEnabled); 2489e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka if (!isWimaxEnabled || RestrictedLockUtils.hasBaseUserRestriction(activity, 2499e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) { 2507c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun PreferenceScreen root = getPreferenceScreen(); 2516f03829e746aa3f505d71723001a7f84a806452fXiaohui Chen Preference ps = findPreference(KEY_WIMAX_SETTINGS); 2527c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun if (ps != null) root.removePreference(ps); 2537c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } else { 2546a5929b086a61a955a4a2f43f5fa251e8754ff4aChristopher Tate if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIMAX ) 2557c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun && isWimaxEnabled) { 2566f03829e746aa3f505d71723001a7f84a806452fXiaohui Chen Preference ps = findPreference(KEY_WIMAX_SETTINGS); 2577c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun ps.setDependency(KEY_TOGGLE_AIRPLANE); 2587c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } 2597c5c16565eccde0b98f7ad08a0f06ff51e8e90cetk.mun } 260fe21d9aaa8a8c7f8a759805ba021b59dd821e4feGeoffrey Borggaard 261b90452f3d26201ea6a231f2150204241e66cd3fbChia-chi Yeh // Manually set dependencies for Wifi when not toggleable. 2626a5929b086a61a955a4a2f43f5fa251e8754ff4aChristopher Tate if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_WIFI)) { 2634e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh findPreference(KEY_VPN_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE); 2644e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh } 265ee27b9de8f2ab17d50b90dd8c13546aebb4e9fc1Julia Reynolds // Disable VPN. 2666f03829e746aa3f505d71723001a7f84a806452fXiaohui Chen // TODO: http://b/23693383 2679e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka if (!isAdmin || RestrictedLockUtils.hasBaseUserRestriction(activity, 2689e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka UserManager.DISALLOW_CONFIG_VPN, UserHandle.myUserId())) { 2699627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani removePreference(KEY_VPN_SETTINGS); 2709627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani } 271ee27b9de8f2ab17d50b90dd8c13546aebb4e9fc1Julia Reynolds 2724e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh // Manually set dependencies for Bluetooth when not toggleable. 2736a5929b086a61a955a4a2f43f5fa251e8754ff4aChristopher Tate if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_BLUETOOTH)) { 274e78c1879058571c00879f0d3e756951302adf513Gilles Debunne // No bluetooth-dependent items in the list. Code kept in case one is added later. 275ad50ba065d31f3d8ec53c512b6ba5cf94d15d1e3Nick Pelly } 276ad50ba065d31f3d8ec53c512b6ba5cf94d15d1e3Nick Pelly 2779894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly // Manually set dependencies for NFC when not toggleable. 2786a5929b086a61a955a4a2f43f5fa251e8754ff4aChristopher Tate if (toggleable == null || !toggleable.contains(Settings.Global.RADIO_NFC)) { 2799894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly findPreference(KEY_TOGGLE_NFC).setDependency(KEY_TOGGLE_AIRPLANE); 2803d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton findPreference(KEY_ANDROID_BEAM_SETTINGS).setDependency(KEY_TOGGLE_AIRPLANE); 2819894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly } 2829894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly 283dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // Remove NFC if not available 284bb4bdc29d64714546255681fcd9c9d92efa9328fMartijn Coenen mNfcAdapter = NfcAdapter.getDefaultAdapter(activity); 285bb4bdc29d64714546255681fcd9c9d92efa9328fMartijn Coenen if (mNfcAdapter == null) { 286ad50ba065d31f3d8ec53c512b6ba5cf94d15d1e3Nick Pelly getPreferenceScreen().removePreference(nfc); 2873d670de5ce9180e0a75d0884832c4714cb56e1b5Jeff Hamilton getPreferenceScreen().removePreference(androidBeam); 2889894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly mNfcEnabler = null; 2894e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh } 290c4764d24837cf297440f0ee97fe8adb943c56fe0Robert Greenwalt 291ee27b9de8f2ab17d50b90dd8c13546aebb4e9fc1Julia Reynolds // Remove Mobile Network Settings and Manage Mobile Plan for secondary users, 2928b8683068fd95010104acc30781a9cfa294f2545Sudheer Shanka // if it's a wifi-only device. 2939e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka if (!isAdmin || Utils.isWifiOnly(getActivity()) || 2949e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka RestrictedLockUtils.hasBaseUserRestriction(activity, 2959e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) { 2969627a8ea151c1f27e5e9f34592c7b34fea3101c3Amith Yamasani removePreference(KEY_MOBILE_NETWORK_SETTINGS); 2975d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville removePreference(KEY_MANAGE_MOBILE_PLAN); 2980f85c48d6c77e811f4d949503f0aa3efd908834dAmith Yamasani } 2992490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi // Remove Mobile Network Settings and Manage Mobile Plan 3002490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi // if config_show_mobile_plan sets false. 301dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio final boolean isMobilePlanEnabled = this.getResources().getBoolean( 3022490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi R.bool.config_show_mobile_plan); 3032490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi if (!isMobilePlanEnabled) { 3042490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi Preference pref = findPreference(KEY_MANAGE_MOBILE_PLAN); 3052490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi if (pref != null) { 3062490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi removePreference(KEY_MANAGE_MOBILE_PLAN); 3072490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi } 3082490315e49d235a1ba9a84600a21febf85959a1aSungmin Choi } 3090f85c48d6c77e811f4d949503f0aa3efd908834dAmith Yamasani 3102e41e3db43ab0e05b70158a4939dabdce270c261Jaewan Kim // Remove Airplane Mode settings if it's a stationary device such as a TV. 31117c008e9d0037373305f4c51442da7532b145dd1Andrew Flynn if (mPm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) { 3122e41e3db43ab0e05b70158a4939dabdce270c261Jaewan Kim removePreference(KEY_TOGGLE_AIRPLANE); 3132e41e3db43ab0e05b70158a4939dabdce270c261Jaewan Kim } 3142e41e3db43ab0e05b70158a4939dabdce270c261Jaewan Kim 31505411893af4afc4bf7b8530d787c5b9e0bbeed39Oscar Montemayor // Enable Proxy selector settings if allowed. 31605411893af4afc4bf7b8530d787c5b9e0bbeed39Oscar Montemayor Preference mGlobalProxy = findPreference(KEY_PROXY_SETTINGS); 317dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio final DevicePolicyManager mDPM = (DevicePolicyManager) 318d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani activity.getSystemService(Context.DEVICE_POLICY_SERVICE); 3196f3a98bb00f12851682c28d265be4f66fad85fd6Robert Greenwalt // proxy UI disabled until we have better app support 3206f3a98bb00f12851682c28d265be4f66fad85fd6Robert Greenwalt getPreferenceScreen().removePreference(mGlobalProxy); 32105411893af4afc4bf7b8530d787c5b9e0bbeed39Oscar Montemayor mGlobalProxy.setEnabled(mDPM.getGlobalProxyAdmin() == null); 32205411893af4afc4bf7b8530d787c5b9e0bbeed39Oscar Montemayor 3230f85c48d6c77e811f4d949503f0aa3efd908834dAmith Yamasani // Disable Tethering if it's not allowed or if it's a wifi-only device 324dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio final ConnectivityManager cm = 325d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE); 326682a916836f5e108289a70579f671f9d4a880993Sudheer Shanka 3279e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka final boolean adminDisallowedTetherConfig = RestrictedLockUtils.checkIfRestrictionEnforced( 3289e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka activity, UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId()) != null; 3299e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka if ((!cm.isTetheringSupported() && !adminDisallowedTetherConfig) || 3309e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka RestrictedLockUtils.hasBaseUserRestriction(activity, 3319e9e63b7b3b31fcae7242eb07f528487e0913402Sudheer Shanka UserManager.DISALLOW_CONFIG_TETHERING, UserHandle.myUserId())) { 332c4764d24837cf297440f0ee97fe8adb943c56fe0Robert Greenwalt getPreferenceScreen().removePreference(findPreference(KEY_TETHER_SETTINGS)); 3338b8683068fd95010104acc30781a9cfa294f2545Sudheer Shanka } else if (!adminDisallowedTetherConfig) { 334e434bfb216682a6ca331fa54ce58a2bff7adf8d7Robert Greenwalt Preference p = findPreference(KEY_TETHER_SETTINGS); 3356e58d516f05bbceabdddd3aa08a94fcc32858e71Wei Liu p.setTitle(com.android.settingslib.Utils.getTetheringLabel(cm)); 33629aab7a2ad3cabdc1681fdc93a0f00b20072d385PauloftheWest 33729aab7a2ad3cabdc1681fdc93a0f00b20072d385PauloftheWest // Grey out if provisioning is not available. 33829aab7a2ad3cabdc1681fdc93a0f00b20072d385PauloftheWest p.setEnabled(!TetherSettings 33929aab7a2ad3cabdc1681fdc93a0f00b20072d385PauloftheWest .isProvisioningNeededButUnavailable(getActivity())); 340c4764d24837cf297440f0ee97fe8adb943c56fe0Robert Greenwalt } 341e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling 342e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling // Remove network reset if not allowed 343e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling if (RestrictedLockUtils.hasBaseUserRestriction(activity, 344e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) { 345e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling removePreference(KEY_NETWORK_RESET); 346e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling } 347afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 348c4764d24837cf297440f0ee97fe8adb943c56fe0Robert Greenwalt 349afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 350d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onResume() { 351afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onResume(); 35232711b6752eb73324e1b10db975ac956888eda96Danica Chang 3534e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh mAirplaneModeEnabler.resume(); 3549894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly if (mNfcEnabler != null) { 3559894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly mNfcEnabler.resume(); 356bb4bdc29d64714546255681fcd9c9d92efa9328fMartijn Coenen } 3574ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak 3583e7e2c57d4074d707161cea0736678311ff5b22ePavel Zhamaitsiak // update WFC setting 3594ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak final Context context = getActivity(); 360e2f59b90ad21ecc07a584a06575a4c4ba75e1eb6Pavel Zhamaitsiak if (ImsManager.isWfcEnabledByPlatform(context) && 361e2f59b90ad21ecc07a584a06575a4c4ba75e1eb6Pavel Zhamaitsiak ImsManager.isWfcProvisionedOnDevice(context)) { 3623e7e2c57d4074d707161cea0736678311ff5b22ePavel Zhamaitsiak getPreferenceScreen().addPreference(mButtonWfc); 3633e7e2c57d4074d707161cea0736678311ff5b22ePavel Zhamaitsiak 3644ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak mButtonWfc.setSummary(WifiCallingSettings.getWfcModeSummary( 365fe3749dd0bfa4856332f1a20177b29fe968127b2Meng Wang context, ImsManager.getWfcMode(context, mTm.isNetworkRoaming()))); 3663e7e2c57d4074d707161cea0736678311ff5b22ePavel Zhamaitsiak } else { 3673e7e2c57d4074d707161cea0736678311ff5b22ePavel Zhamaitsiak removePreference(KEY_WFC_SETTINGS); 3684ab32563f1cd7d018ee7cdaec8d5a527964a05b9Pavel Zhamaitsiak } 369afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 37032711b6752eb73324e1b10db975ac956888eda96Danica Chang 371afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project @Override 3725d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville public void onSaveInstanceState(Bundle outState) { 3735d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville super.onSaveInstanceState(outState); 3745d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 3755d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville if (!TextUtils.isEmpty(mManageMobilePlanMessage)) { 3765d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville outState.putString(SAVED_MANAGE_MOBILE_PLAN_MSG, mManageMobilePlanMessage); 3775d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 3785d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville } 3795d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville 3805d5a269f59aa5caa986eff3cb988d7585b2cd43cWink Saville @Override 381d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onPause() { 382afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project super.onPause(); 38332711b6752eb73324e1b10db975ac956888eda96Danica Chang 384afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project mAirplaneModeEnabler.pause(); 3859894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly if (mNfcEnabler != null) { 3869894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly mNfcEnabler.pause(); 3879894d4ade475392f665bf87bf7f91d3cbed3eaa4Nick Pelly } 388afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project } 38932711b6752eb73324e1b10db975ac956888eda96Danica Chang 39071cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang @Override 391d79934731c8d33f6fc63b21c120b9ffba5d06f54Amith Yamasani public void onActivityResult(int requestCode, int resultCode, Intent data) { 3924e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh if (requestCode == REQUEST_CODE_EXIT_ECM) { 3934e14211d21387d645ecdad406f3350d36e5a8643Chia-chi Yeh Boolean isChoiceYes = data.getBooleanExtra(EXIT_ECM_RESULT, false); 39471cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang // Set Airplane mode based on the return value and checkbox state 39571cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang mAirplaneModeEnabler.setAirplaneModeInECM(isChoiceYes, 39671cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang mAirplaneModePreference.isChecked()); 39771cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang } 398fe21d9aaa8a8c7f8a759805ba021b59dd821e4feGeoffrey Borggaard super.onActivityResult(requestCode, resultCode, data); 39971cc49e480e7dfd5d0986d7600d0c73aecdbdf93Chouting Zhang } 400b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani 401b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani @Override 402b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani protected int getHelpResource() { 403b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani return R.string.help_url_more_networks; 404b0b37ae21c172491bc170659b5f429601858ddc1Amith Yamasani } 4054e9f04de0a6511086f47479addb53b84c3bb9763David Braun 406dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio /** 407dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio * For Search. 408dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio */ 409dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 410dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio new BaseSearchIndexProvider() { 411dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio @Override 412dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio public List<SearchIndexableResource> getXmlResourcesToIndex( 413dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio Context context, boolean enabled) { 414ca060e3e98c561cad5e28603200810ca70ae4869Fyodor Kupolov // Remove wireless settings from search in demo mode 415ca060e3e98c561cad5e28603200810ca70ae4869Fyodor Kupolov if (UserManager.isDeviceInDemoMode(context)) { 416ca060e3e98c561cad5e28603200810ca70ae4869Fyodor Kupolov return Collections.emptyList(); 417ca060e3e98c561cad5e28603200810ca70ae4869Fyodor Kupolov } 418dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio SearchIndexableResource sir = new SearchIndexableResource(context); 419dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio sir.xmlResId = R.xml.wireless_settings; 420dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio return Arrays.asList(sir); 421dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 422dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 423dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio @Override 424dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio public List<String> getNonIndexableKeys(Context context) { 425dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio final ArrayList<String> result = new ArrayList<String>(); 426dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 42700d19c7426b08a1bc54694c886086b738ecd6116Julia Reynolds final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); 42844879a387a6be6b93cdcc8894227d68af7dbbb1aXiaohui Chen final boolean isSecondaryUser = !um.isAdminUser(); 42932505ac6992207367bf9a0fb05e8928602c9391bAmith Yamasani final boolean isWimaxEnabled = !isSecondaryUser 43032505ac6992207367bf9a0fb05e8928602c9391bAmith Yamasani && context.getResources().getBoolean( 431dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio com.android.internal.R.bool.config_wimaxEnabled); 4328b8683068fd95010104acc30781a9cfa294f2545Sudheer Shanka if (!isWimaxEnabled) { 433dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_WIMAX_SETTINGS); 434dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 435dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 436dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (isSecondaryUser) { // Disable VPN 437dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_VPN_SETTINGS); 438dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 439dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 440dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // Remove NFC if not available 44132505ac6992207367bf9a0fb05e8928602c9391bAmith Yamasani final NfcManager manager = (NfcManager) 44232505ac6992207367bf9a0fb05e8928602c9391bAmith Yamasani context.getSystemService(Context.NFC_SERVICE); 443dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (manager != null) { 444dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio NfcAdapter adapter = manager.getDefaultAdapter(); 445dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (adapter == null) { 446dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_TOGGLE_NFC); 447dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_ANDROID_BEAM_SETTINGS); 448dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 449dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 450dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 451dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // Remove Mobile Network Settings and Manage Mobile Plan if it's a wifi-only device. 452dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (isSecondaryUser || Utils.isWifiOnly(context)) { 453dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_MOBILE_NETWORK_SETTINGS); 454dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_MANAGE_MOBILE_PLAN); 455dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 456dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 457dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // Remove Mobile Network Settings and Manage Mobile Plan 458dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // if config_show_mobile_plan sets false. 459dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio final boolean isMobilePlanEnabled = context.getResources().getBoolean( 460dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio R.bool.config_show_mobile_plan); 461dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (!isMobilePlanEnabled) { 462dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_MANAGE_MOBILE_PLAN); 463dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 464dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 465dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio final PackageManager pm = context.getPackageManager(); 466dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 467dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // Remove Airplane Mode settings if it's a stationary device such as a TV. 468dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION)) { 469dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_TOGGLE_AIRPLANE); 470dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 471dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 472dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // proxy UI disabled until we have better app support 473dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_PROXY_SETTINGS); 474dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 475dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio // Disable Tethering if it's not allowed or if it's a wifi-only device 47632505ac6992207367bf9a0fb05e8928602c9391bAmith Yamasani ConnectivityManager cm = (ConnectivityManager) 47732505ac6992207367bf9a0fb05e8928602c9391bAmith Yamasani context.getSystemService(Context.CONNECTIVITY_SERVICE); 478dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio if (isSecondaryUser || !cm.isTetheringSupported()) { 479dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio result.add(KEY_TETHER_SETTINGS); 480dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 481dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio 482e2f59b90ad21ecc07a584a06575a4c4ba75e1eb6Pavel Zhamaitsiak if (!ImsManager.isWfcEnabledByPlatform(context) || 483e2f59b90ad21ecc07a584a06575a4c4ba75e1eb6Pavel Zhamaitsiak !ImsManager.isWfcProvisionedOnDevice(context)) { 484ec4706a2279ec440b66f6ee9b47051c2b94e8102Anju Mathapati result.add(KEY_WFC_SETTINGS); 485ec4706a2279ec440b66f6ee9b47051c2b94e8102Anju Mathapati } 486ec4706a2279ec440b66f6ee9b47051c2b94e8102Anju Mathapati 487e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling if (RestrictedLockUtils.hasBaseUserRestriction(context, 488e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) { 489e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling result.add(KEY_NETWORK_RESET); 490e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling } 491e6f635ff823499203ef8ab4c01de07ea0eb33ad9Doris Ling 492dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio return result; 493dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio } 494dba577f8f017baac0086c185579340db1c9281d9Fabrice Di Meglio }; 495afc4ab2ffbb8327ddce9907961295a32cbf49d0fThe Android Open Source Project} 496