Loading res/xml/network_and_internet.xml +26 −0 Original line number Diff line number Diff line Loading @@ -54,4 +54,30 @@ settings:userRestriction="no_config_vpn" settings:useAdminDisabledSummary="true"/> <com.android.settingslib.RestrictedPreference android:key="manage_mobile_plan" android:title="@string/manage_mobile_plan_title" android:persistent="false" settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true"/> <Preference android:key="wifi_calling_settings" android:title="@string/wifi_calling_settings_title" android:fragment="com.android.settings.WifiCallingSettings" settings:keywords="@string/keywords_wifi_calling"/> <Preference android:fragment="com.android.settings.ProxySelector" android:key="proxy_settings" android:title="@string/proxy_settings_title"/> <!-- Network reset --> <com.android.settingslib.RestrictedPreference android:key="network_reset" android:title="@string/reset_network_title" settings:keywords="@string/keywords_network_reset" android:fragment="com.android.settings.ResetNetwork" settings:userRestriction="no_network_reset" settings:useAdminDisabledSummary="true"/> </PreferenceScreen> No newline at end of file src/com/android/settings/WifiCallingSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -443,7 +443,7 @@ public class WifiCallingSettings extends SettingsPreferenceFragment return true; } static int getWfcModeSummary(Context context, int wfcMode) { public static int getWfcModeSummary(Context context, int wfcMode) { int resId = com.android.internal.R.string.wifi_calling_off_summary; if (ImsManager.isWfcEnabledByUser(context)) { switch (wfcMode) { Loading src/com/android/settings/WirelessSettings.java +91 −224 Original line number Diff line number Diff line Loading @@ -20,15 +20,10 @@ package com.android.settings; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.admin.DevicePolicyManager; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.nfc.NfcAdapter; import android.nfc.NfcManager; import android.os.Bundle; Loading @@ -40,16 +35,17 @@ import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import com.android.ims.ImsManager; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.telephony.TelephonyIntents; import com.android.settings.network.AirplaneModePreferenceController; import com.android.settings.network.MobileNetworkPreferenceController; import com.android.settings.network.MobilePlanPreferenceController; import com.android.settings.network.NetworkResetPreferenceController; import com.android.settings.network.ProxyPreferenceController; import com.android.settings.network.TetherPreferenceController; import com.android.settings.network.VpnPreferenceController; import com.android.settings.network.WifiCallingPreferenceController; import com.android.settings.nfc.NfcEnabler; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; Loading @@ -61,33 +57,29 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; public class WirelessSettings extends SettingsPreferenceFragment implements Indexable { import static com.android.settings.network.MobilePlanPreferenceController .MANAGE_MOBILE_PLAN_DIALOG_ID; public class WirelessSettings extends SettingsPreferenceFragment implements Indexable, MobilePlanPreferenceController.MobilePlanPreferenceHost { private static final String TAG = "WirelessSettings"; private static final String KEY_TOGGLE_NFC = "toggle_nfc"; private static final String KEY_WIMAX_SETTINGS = "wimax_settings"; private static final String KEY_ANDROID_BEAM_SETTINGS = "android_beam_settings"; private static final String KEY_PROXY_SETTINGS = "proxy_settings"; private static final String KEY_MANAGE_MOBILE_PLAN = "manage_mobile_plan"; private static final String KEY_WFC_SETTINGS = "wifi_calling_settings"; private static final String KEY_NETWORK_RESET = "network_reset"; private NfcEnabler mNfcEnabler; private NfcAdapter mNfcAdapter; private ConnectivityManager mCm; private TelephonyManager mTm; private UserManager mUm; private static final int MANAGE_MOBILE_PLAN_DIALOG_ID = 1; private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage"; private PreferenceScreen mButtonWfc; private AirplaneModePreferenceController mAirplaneModePreferenceController; private TetherPreferenceController mTetherPreferenceController; private MobileNetworkPreferenceController mMobileNetworkPreferenceController; private VpnPreferenceController mVpnPreferenceController; private NetworkResetPreferenceController mNetworkResetPreferenceController; private WifiCallingPreferenceController mWifiCallingPreferenceController; private ProxyPreferenceController mProxyPreferenceController; private MobilePlanPreferenceController mMobilePlanPreferenceController; /** * Invoked on each preference click in this hierarchy, overrides Loading @@ -100,93 +92,28 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde if (mAirplaneModePreferenceController.handlePreferenceTreeClick(preference)) { return true; } if (preference == findPreference(KEY_MANAGE_MOBILE_PLAN)) { onManageMobilePlanClick(); if (mMobilePlanPreferenceController.handlePreferenceTreeClick(preference)) { return true; } // Let the intents be launched by the Preference manager return super.onPreferenceTreeClick(preference); } private String mManageMobilePlanMessage; public void onManageMobilePlanClick() { log("onManageMobilePlanClick:"); mManageMobilePlanMessage = null; Resources resources = getActivity().getResources(); NetworkInfo ni = mCm.getActiveNetworkInfo(); if (mTm.hasIccCard() && (ni != null)) { // Check for carrier apps that can handle provisioning first Intent provisioningIntent = new Intent(TelephonyIntents.ACTION_CARRIER_SETUP); List<String> carrierPackages = mTm.getCarrierPackageNamesForIntent(provisioningIntent); if (carrierPackages != null && !carrierPackages.isEmpty()) { if (carrierPackages.size() != 1) { Log.w(TAG, "Multiple matching carrier apps found, launching the first."); } provisioningIntent.setPackage(carrierPackages.get(0)); startActivity(provisioningIntent); return; } // Get provisioning URL String url = mCm.getMobileProvisioningUrl(); if (!TextUtils.isEmpty(url)) { Intent intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER); intent.setData(Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(intent); } catch (ActivityNotFoundException e) { Log.w(TAG, "onManageMobilePlanClick: startActivity failed" + e); } } else { // No provisioning URL String operatorName = mTm.getSimOperatorName(); if (TextUtils.isEmpty(operatorName)) { // Use NetworkOperatorName as second choice in case there is no // SPN (Service Provider Name on the SIM). Such as with T-mobile. operatorName = mTm.getNetworkOperatorName(); if (TextUtils.isEmpty(operatorName)) { mManageMobilePlanMessage = resources.getString( R.string.mobile_unknown_sim_operator); } else { mManageMobilePlanMessage = resources.getString( R.string.mobile_no_provisioning_url, operatorName); } } else { mManageMobilePlanMessage = resources.getString( R.string.mobile_no_provisioning_url, operatorName); } } } else if (mTm.hasIccCard() == false) { // No sim card mManageMobilePlanMessage = resources.getString(R.string.mobile_insert_sim_card); } else { // NetworkInfo is null, there is no connection mManageMobilePlanMessage = resources.getString(R.string.mobile_connect_to_internet); } if (!TextUtils.isEmpty(mManageMobilePlanMessage)) { log("onManageMobilePlanClick: message=" + mManageMobilePlanMessage); showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID); } } @Override public Dialog onCreateDialog(int dialogId) { log("onCreateDialog: dialogId=" + dialogId); switch (dialogId) { case MANAGE_MOBILE_PLAN_DIALOG_ID: return new AlertDialog.Builder(getActivity()) .setMessage(mManageMobilePlanMessage) .setMessage(mMobilePlanPreferenceController.getMobilePlanDialogMessage()) .setCancelable(false) .setPositiveButton(com.android.internal.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { log("MANAGE_MOBILE_PLAN_DIALOG.onClickListener id=" + id); mManageMobilePlanMessage = null; mMobilePlanPreferenceController .setMobilePlanDialogMessage(null); } }) .create(); Loading Loading @@ -215,13 +142,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { mManageMobilePlanMessage = savedInstanceState.getString(SAVED_MANAGE_MOBILE_PLAN_MSG); } log("onCreate: mManageMobilePlanMessage=" + mManageMobilePlanMessage); mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mTm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mUm = (UserManager) getSystemService(Context.USER_SERVICE); addPreferencesFromResource(R.xml.wireless_settings); Loading @@ -235,11 +155,21 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde mTetherPreferenceController = new TetherPreferenceController(activity); mMobileNetworkPreferenceController = new MobileNetworkPreferenceController(activity); mVpnPreferenceController = new VpnPreferenceController(activity); mWifiCallingPreferenceController = new WifiCallingPreferenceController(activity); mNetworkResetPreferenceController = new NetworkResetPreferenceController(activity); mProxyPreferenceController = new ProxyPreferenceController(activity); mMobilePlanPreferenceController = new MobilePlanPreferenceController(activity, this); mMobilePlanPreferenceController.onCreate(savedInstanceState); mAirplaneModePreferenceController.displayPreference(screen); mTetherPreferenceController.displayPreference(screen); mMobileNetworkPreferenceController.displayPreference(screen); mVpnPreferenceController.displayPreference(screen); mWifiCallingPreferenceController.displayPreference(screen); mNetworkResetPreferenceController.displayPreference(screen); mProxyPreferenceController.displayPreference(screen); mMobilePlanPreferenceController.displayPreference(screen); SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC); RestrictedPreference androidBeam = (RestrictedPreference) findPreference( Loading @@ -247,8 +177,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam); mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS); String toggleable = Settings.Global.getString(activity.getContentResolver(), Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS); Loading Loading @@ -283,38 +211,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde getPreferenceScreen().removePreference(androidBeam); mNfcEnabler = null; } // Remove Mobile Network Settings and Manage Mobile Plan for secondary users, // if it's a wifi-only device. if (!isAdmin || Utils.isWifiOnly(getActivity()) || RestrictedLockUtils.hasBaseUserRestriction(activity, UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) { removePreference(KEY_MANAGE_MOBILE_PLAN); } // Remove Mobile Network Settings and Manage Mobile Plan // if config_show_mobile_plan sets false. final boolean isMobilePlanEnabled = this.getResources().getBoolean( R.bool.config_show_mobile_plan); if (!isMobilePlanEnabled) { Preference pref = findPreference(KEY_MANAGE_MOBILE_PLAN); if (pref != null) { removePreference(KEY_MANAGE_MOBILE_PLAN); } } // Enable Proxy selector settings if allowed. Preference mGlobalProxy = findPreference(KEY_PROXY_SETTINGS); final DevicePolicyManager mDPM = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE); // proxy UI disabled until we have better app support getPreferenceScreen().removePreference(mGlobalProxy); mGlobalProxy.setEnabled(mDPM.getGlobalProxyAdmin() == null); // Remove network reset if not allowed if (RestrictedLockUtils.hasBaseUserRestriction(activity, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) { removePreference(KEY_NETWORK_RESET); } } @Override Loading @@ -325,27 +221,12 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde if (mNfcEnabler != null) { mNfcEnabler.resume(); } // update WFC setting final Context context = getActivity(); if (ImsManager.isWfcEnabledByPlatform(context) && ImsManager.isWfcProvisionedOnDevice(context)) { getPreferenceScreen().addPreference(mButtonWfc); mButtonWfc.setSummary(WifiCallingSettings.getWfcModeSummary( context, ImsManager.getWfcMode(context, mTm.isNetworkRoaming()))); } else { removePreference(KEY_WFC_SETTINGS); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (!TextUtils.isEmpty(mManageMobilePlanMessage)) { outState.putString(SAVED_MANAGE_MOBILE_PLAN_MSG, mManageMobilePlanMessage); } mMobilePlanPreferenceController.onSaveInstanceState(outState); } @Override Loading @@ -363,6 +244,11 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde super.onActivityResult(requestCode, resultCode, data); } @Override public void showMobilePlanMessageDialog() { showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID); } @Override protected int getHelpResource() { return R.string.help_url_more_networks; Loading @@ -389,7 +275,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde public List<String> getNonIndexableKeys(Context context) { final ArrayList<String> result = new ArrayList<String>(); final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); final UserManager um = (UserManager) context.getSystemService( Context.USER_SERVICE); final boolean isSecondaryUser = !um.isAdminUser(); final boolean isWimaxEnabled = !isSecondaryUser && context.getResources().getBoolean( Loading @@ -410,39 +297,19 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde result.add(KEY_ANDROID_BEAM_SETTINGS); } } // Remove Mobile Network Settings and Manage Mobile Plan if it's a wifi-only device. if (isSecondaryUser || Utils.isWifiOnly(context)) { result.add(KEY_MANAGE_MOBILE_PLAN); } new MobilePlanPreferenceController(context, null /* MobilePlanClickHandler */) .updateNonIndexableKeys(result); new MobileNetworkPreferenceController(context).updateNonIndexableKeys(result); // Remove Mobile Network Settings and Manage Mobile Plan // if config_show_mobile_plan sets false. final boolean isMobilePlanEnabled = context.getResources().getBoolean( R.bool.config_show_mobile_plan); if (!isMobilePlanEnabled) { result.add(KEY_MANAGE_MOBILE_PLAN); } // Remove Airplane Mode settings if it's a stationary device such as a TV. new AirplaneModePreferenceController(context, null /* fragment */) .updateNonIndexableKeys(result); // proxy UI disabled until we have better app support result.add(KEY_PROXY_SETTINGS); new TetherPreferenceController(context) .updateNonIndexableKeys(result); if (!ImsManager.isWfcEnabledByPlatform(context) || !ImsManager.isWfcProvisionedOnDevice(context)) { result.add(KEY_WFC_SETTINGS); } new ProxyPreferenceController(context).updateNonIndexableKeys(result); if (RestrictedLockUtils.hasBaseUserRestriction(context, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) { result.add(KEY_NETWORK_RESET); } new TetherPreferenceController(context).updateNonIndexableKeys(result); new WifiCallingPreferenceController(context).updateNonIndexableKeys(result); new NetworkResetPreferenceController(context).updateNonIndexableKeys(result); return result; } Loading src/com/android/settings/core/lifecycle/Lifecycle.java +19 −0 Original line number Diff line number Diff line Loading @@ -17,11 +17,14 @@ package com.android.settings.core.lifecycle; import android.annotation.UiThread; import android.content.Context; import android.os.Bundle; import com.android.settings.core.lifecycle.events.OnAttach; import com.android.settings.core.lifecycle.events.OnCreate; import com.android.settings.core.lifecycle.events.OnDestroy; import com.android.settings.core.lifecycle.events.OnPause; import com.android.settings.core.lifecycle.events.OnResume; import com.android.settings.core.lifecycle.events.OnSaveInstanceState; import com.android.settings.core.lifecycle.events.OnStart; import com.android.settings.core.lifecycle.events.OnStop; import com.android.settings.utils.ThreadUtils; Loading Loading @@ -54,6 +57,14 @@ public class Lifecycle { } } public void onCreate(Bundle savedInstanceState) { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnCreate) { ((OnCreate) observer).onCreate(savedInstanceState); } } } public void onStart() { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnStart) { Loading @@ -78,6 +89,14 @@ public class Lifecycle { } } public void onSaveInstanceState(Bundle outState) { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnSaveInstanceState) { ((OnSaveInstanceState) observer).onSaveInstanceState(outState); } } } public void onStop() { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnStop) { Loading src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java +15 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.core.lifecycle; import android.annotation.CallSuper; import android.content.Context; import android.os.Bundle; import android.support.v14.preference.PreferenceFragment; /** Loading @@ -38,6 +39,20 @@ public abstract class ObservablePreferenceFragment extends PreferenceFragment { mLifecycle.onAttach(context); } @CallSuper @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLifecycle.onCreate(savedInstanceState); } @CallSuper @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mLifecycle.onSaveInstanceState(outState); } @CallSuper @Override public void onStart() { Loading Loading
res/xml/network_and_internet.xml +26 −0 Original line number Diff line number Diff line Loading @@ -54,4 +54,30 @@ settings:userRestriction="no_config_vpn" settings:useAdminDisabledSummary="true"/> <com.android.settingslib.RestrictedPreference android:key="manage_mobile_plan" android:title="@string/manage_mobile_plan_title" android:persistent="false" settings:userRestriction="no_config_mobile_networks" settings:useAdminDisabledSummary="true"/> <Preference android:key="wifi_calling_settings" android:title="@string/wifi_calling_settings_title" android:fragment="com.android.settings.WifiCallingSettings" settings:keywords="@string/keywords_wifi_calling"/> <Preference android:fragment="com.android.settings.ProxySelector" android:key="proxy_settings" android:title="@string/proxy_settings_title"/> <!-- Network reset --> <com.android.settingslib.RestrictedPreference android:key="network_reset" android:title="@string/reset_network_title" settings:keywords="@string/keywords_network_reset" android:fragment="com.android.settings.ResetNetwork" settings:userRestriction="no_network_reset" settings:useAdminDisabledSummary="true"/> </PreferenceScreen> No newline at end of file
src/com/android/settings/WifiCallingSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -443,7 +443,7 @@ public class WifiCallingSettings extends SettingsPreferenceFragment return true; } static int getWfcModeSummary(Context context, int wfcMode) { public static int getWfcModeSummary(Context context, int wfcMode) { int resId = com.android.internal.R.string.wifi_calling_off_summary; if (ImsManager.isWfcEnabledByUser(context)) { switch (wfcMode) { Loading
src/com/android/settings/WirelessSettings.java +91 −224 Original line number Diff line number Diff line Loading @@ -20,15 +20,10 @@ package com.android.settings; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.admin.DevicePolicyManager; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.res.Resources; import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.nfc.NfcAdapter; import android.nfc.NfcManager; import android.os.Bundle; Loading @@ -40,16 +35,17 @@ import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.util.Log; import com.android.ims.ImsManager; import com.android.internal.logging.MetricsProto.MetricsEvent; import com.android.internal.telephony.TelephonyIntents; import com.android.settings.network.AirplaneModePreferenceController; import com.android.settings.network.MobileNetworkPreferenceController; import com.android.settings.network.MobilePlanPreferenceController; import com.android.settings.network.NetworkResetPreferenceController; import com.android.settings.network.ProxyPreferenceController; import com.android.settings.network.TetherPreferenceController; import com.android.settings.network.VpnPreferenceController; import com.android.settings.network.WifiCallingPreferenceController; import com.android.settings.nfc.NfcEnabler; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; Loading @@ -61,33 +57,29 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; public class WirelessSettings extends SettingsPreferenceFragment implements Indexable { import static com.android.settings.network.MobilePlanPreferenceController .MANAGE_MOBILE_PLAN_DIALOG_ID; public class WirelessSettings extends SettingsPreferenceFragment implements Indexable, MobilePlanPreferenceController.MobilePlanPreferenceHost { private static final String TAG = "WirelessSettings"; private static final String KEY_TOGGLE_NFC = "toggle_nfc"; private static final String KEY_WIMAX_SETTINGS = "wimax_settings"; private static final String KEY_ANDROID_BEAM_SETTINGS = "android_beam_settings"; private static final String KEY_PROXY_SETTINGS = "proxy_settings"; private static final String KEY_MANAGE_MOBILE_PLAN = "manage_mobile_plan"; private static final String KEY_WFC_SETTINGS = "wifi_calling_settings"; private static final String KEY_NETWORK_RESET = "network_reset"; private NfcEnabler mNfcEnabler; private NfcAdapter mNfcAdapter; private ConnectivityManager mCm; private TelephonyManager mTm; private UserManager mUm; private static final int MANAGE_MOBILE_PLAN_DIALOG_ID = 1; private static final String SAVED_MANAGE_MOBILE_PLAN_MSG = "mManageMobilePlanMessage"; private PreferenceScreen mButtonWfc; private AirplaneModePreferenceController mAirplaneModePreferenceController; private TetherPreferenceController mTetherPreferenceController; private MobileNetworkPreferenceController mMobileNetworkPreferenceController; private VpnPreferenceController mVpnPreferenceController; private NetworkResetPreferenceController mNetworkResetPreferenceController; private WifiCallingPreferenceController mWifiCallingPreferenceController; private ProxyPreferenceController mProxyPreferenceController; private MobilePlanPreferenceController mMobilePlanPreferenceController; /** * Invoked on each preference click in this hierarchy, overrides Loading @@ -100,93 +92,28 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde if (mAirplaneModePreferenceController.handlePreferenceTreeClick(preference)) { return true; } if (preference == findPreference(KEY_MANAGE_MOBILE_PLAN)) { onManageMobilePlanClick(); if (mMobilePlanPreferenceController.handlePreferenceTreeClick(preference)) { return true; } // Let the intents be launched by the Preference manager return super.onPreferenceTreeClick(preference); } private String mManageMobilePlanMessage; public void onManageMobilePlanClick() { log("onManageMobilePlanClick:"); mManageMobilePlanMessage = null; Resources resources = getActivity().getResources(); NetworkInfo ni = mCm.getActiveNetworkInfo(); if (mTm.hasIccCard() && (ni != null)) { // Check for carrier apps that can handle provisioning first Intent provisioningIntent = new Intent(TelephonyIntents.ACTION_CARRIER_SETUP); List<String> carrierPackages = mTm.getCarrierPackageNamesForIntent(provisioningIntent); if (carrierPackages != null && !carrierPackages.isEmpty()) { if (carrierPackages.size() != 1) { Log.w(TAG, "Multiple matching carrier apps found, launching the first."); } provisioningIntent.setPackage(carrierPackages.get(0)); startActivity(provisioningIntent); return; } // Get provisioning URL String url = mCm.getMobileProvisioningUrl(); if (!TextUtils.isEmpty(url)) { Intent intent = Intent.makeMainSelectorActivity(Intent.ACTION_MAIN, Intent.CATEGORY_APP_BROWSER); intent.setData(Uri.parse(url)); intent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); try { startActivity(intent); } catch (ActivityNotFoundException e) { Log.w(TAG, "onManageMobilePlanClick: startActivity failed" + e); } } else { // No provisioning URL String operatorName = mTm.getSimOperatorName(); if (TextUtils.isEmpty(operatorName)) { // Use NetworkOperatorName as second choice in case there is no // SPN (Service Provider Name on the SIM). Such as with T-mobile. operatorName = mTm.getNetworkOperatorName(); if (TextUtils.isEmpty(operatorName)) { mManageMobilePlanMessage = resources.getString( R.string.mobile_unknown_sim_operator); } else { mManageMobilePlanMessage = resources.getString( R.string.mobile_no_provisioning_url, operatorName); } } else { mManageMobilePlanMessage = resources.getString( R.string.mobile_no_provisioning_url, operatorName); } } } else if (mTm.hasIccCard() == false) { // No sim card mManageMobilePlanMessage = resources.getString(R.string.mobile_insert_sim_card); } else { // NetworkInfo is null, there is no connection mManageMobilePlanMessage = resources.getString(R.string.mobile_connect_to_internet); } if (!TextUtils.isEmpty(mManageMobilePlanMessage)) { log("onManageMobilePlanClick: message=" + mManageMobilePlanMessage); showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID); } } @Override public Dialog onCreateDialog(int dialogId) { log("onCreateDialog: dialogId=" + dialogId); switch (dialogId) { case MANAGE_MOBILE_PLAN_DIALOG_ID: return new AlertDialog.Builder(getActivity()) .setMessage(mManageMobilePlanMessage) .setMessage(mMobilePlanPreferenceController.getMobilePlanDialogMessage()) .setCancelable(false) .setPositiveButton(com.android.internal.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { log("MANAGE_MOBILE_PLAN_DIALOG.onClickListener id=" + id); mManageMobilePlanMessage = null; mMobilePlanPreferenceController .setMobilePlanDialogMessage(null); } }) .create(); Loading Loading @@ -215,13 +142,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { mManageMobilePlanMessage = savedInstanceState.getString(SAVED_MANAGE_MOBILE_PLAN_MSG); } log("onCreate: mManageMobilePlanMessage=" + mManageMobilePlanMessage); mCm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mTm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); mUm = (UserManager) getSystemService(Context.USER_SERVICE); addPreferencesFromResource(R.xml.wireless_settings); Loading @@ -235,11 +155,21 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde mTetherPreferenceController = new TetherPreferenceController(activity); mMobileNetworkPreferenceController = new MobileNetworkPreferenceController(activity); mVpnPreferenceController = new VpnPreferenceController(activity); mWifiCallingPreferenceController = new WifiCallingPreferenceController(activity); mNetworkResetPreferenceController = new NetworkResetPreferenceController(activity); mProxyPreferenceController = new ProxyPreferenceController(activity); mMobilePlanPreferenceController = new MobilePlanPreferenceController(activity, this); mMobilePlanPreferenceController.onCreate(savedInstanceState); mAirplaneModePreferenceController.displayPreference(screen); mTetherPreferenceController.displayPreference(screen); mMobileNetworkPreferenceController.displayPreference(screen); mVpnPreferenceController.displayPreference(screen); mWifiCallingPreferenceController.displayPreference(screen); mNetworkResetPreferenceController.displayPreference(screen); mProxyPreferenceController.displayPreference(screen); mMobilePlanPreferenceController.displayPreference(screen); SwitchPreference nfc = (SwitchPreference) findPreference(KEY_TOGGLE_NFC); RestrictedPreference androidBeam = (RestrictedPreference) findPreference( Loading @@ -247,8 +177,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde mNfcEnabler = new NfcEnabler(activity, nfc, androidBeam); mButtonWfc = (PreferenceScreen) findPreference(KEY_WFC_SETTINGS); String toggleable = Settings.Global.getString(activity.getContentResolver(), Settings.Global.AIRPLANE_MODE_TOGGLEABLE_RADIOS); Loading Loading @@ -283,38 +211,6 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde getPreferenceScreen().removePreference(androidBeam); mNfcEnabler = null; } // Remove Mobile Network Settings and Manage Mobile Plan for secondary users, // if it's a wifi-only device. if (!isAdmin || Utils.isWifiOnly(getActivity()) || RestrictedLockUtils.hasBaseUserRestriction(activity, UserManager.DISALLOW_CONFIG_MOBILE_NETWORKS, UserHandle.myUserId())) { removePreference(KEY_MANAGE_MOBILE_PLAN); } // Remove Mobile Network Settings and Manage Mobile Plan // if config_show_mobile_plan sets false. final boolean isMobilePlanEnabled = this.getResources().getBoolean( R.bool.config_show_mobile_plan); if (!isMobilePlanEnabled) { Preference pref = findPreference(KEY_MANAGE_MOBILE_PLAN); if (pref != null) { removePreference(KEY_MANAGE_MOBILE_PLAN); } } // Enable Proxy selector settings if allowed. Preference mGlobalProxy = findPreference(KEY_PROXY_SETTINGS); final DevicePolicyManager mDPM = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE); // proxy UI disabled until we have better app support getPreferenceScreen().removePreference(mGlobalProxy); mGlobalProxy.setEnabled(mDPM.getGlobalProxyAdmin() == null); // Remove network reset if not allowed if (RestrictedLockUtils.hasBaseUserRestriction(activity, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) { removePreference(KEY_NETWORK_RESET); } } @Override Loading @@ -325,27 +221,12 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde if (mNfcEnabler != null) { mNfcEnabler.resume(); } // update WFC setting final Context context = getActivity(); if (ImsManager.isWfcEnabledByPlatform(context) && ImsManager.isWfcProvisionedOnDevice(context)) { getPreferenceScreen().addPreference(mButtonWfc); mButtonWfc.setSummary(WifiCallingSettings.getWfcModeSummary( context, ImsManager.getWfcMode(context, mTm.isNetworkRoaming()))); } else { removePreference(KEY_WFC_SETTINGS); } } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (!TextUtils.isEmpty(mManageMobilePlanMessage)) { outState.putString(SAVED_MANAGE_MOBILE_PLAN_MSG, mManageMobilePlanMessage); } mMobilePlanPreferenceController.onSaveInstanceState(outState); } @Override Loading @@ -363,6 +244,11 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde super.onActivityResult(requestCode, resultCode, data); } @Override public void showMobilePlanMessageDialog() { showDialog(MANAGE_MOBILE_PLAN_DIALOG_ID); } @Override protected int getHelpResource() { return R.string.help_url_more_networks; Loading @@ -389,7 +275,8 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde public List<String> getNonIndexableKeys(Context context) { final ArrayList<String> result = new ArrayList<String>(); final UserManager um = (UserManager) context.getSystemService(Context.USER_SERVICE); final UserManager um = (UserManager) context.getSystemService( Context.USER_SERVICE); final boolean isSecondaryUser = !um.isAdminUser(); final boolean isWimaxEnabled = !isSecondaryUser && context.getResources().getBoolean( Loading @@ -410,39 +297,19 @@ public class WirelessSettings extends SettingsPreferenceFragment implements Inde result.add(KEY_ANDROID_BEAM_SETTINGS); } } // Remove Mobile Network Settings and Manage Mobile Plan if it's a wifi-only device. if (isSecondaryUser || Utils.isWifiOnly(context)) { result.add(KEY_MANAGE_MOBILE_PLAN); } new MobilePlanPreferenceController(context, null /* MobilePlanClickHandler */) .updateNonIndexableKeys(result); new MobileNetworkPreferenceController(context).updateNonIndexableKeys(result); // Remove Mobile Network Settings and Manage Mobile Plan // if config_show_mobile_plan sets false. final boolean isMobilePlanEnabled = context.getResources().getBoolean( R.bool.config_show_mobile_plan); if (!isMobilePlanEnabled) { result.add(KEY_MANAGE_MOBILE_PLAN); } // Remove Airplane Mode settings if it's a stationary device such as a TV. new AirplaneModePreferenceController(context, null /* fragment */) .updateNonIndexableKeys(result); // proxy UI disabled until we have better app support result.add(KEY_PROXY_SETTINGS); new TetherPreferenceController(context) .updateNonIndexableKeys(result); if (!ImsManager.isWfcEnabledByPlatform(context) || !ImsManager.isWfcProvisionedOnDevice(context)) { result.add(KEY_WFC_SETTINGS); } new ProxyPreferenceController(context).updateNonIndexableKeys(result); if (RestrictedLockUtils.hasBaseUserRestriction(context, UserManager.DISALLOW_NETWORK_RESET, UserHandle.myUserId())) { result.add(KEY_NETWORK_RESET); } new TetherPreferenceController(context).updateNonIndexableKeys(result); new WifiCallingPreferenceController(context).updateNonIndexableKeys(result); new NetworkResetPreferenceController(context).updateNonIndexableKeys(result); return result; } Loading
src/com/android/settings/core/lifecycle/Lifecycle.java +19 −0 Original line number Diff line number Diff line Loading @@ -17,11 +17,14 @@ package com.android.settings.core.lifecycle; import android.annotation.UiThread; import android.content.Context; import android.os.Bundle; import com.android.settings.core.lifecycle.events.OnAttach; import com.android.settings.core.lifecycle.events.OnCreate; import com.android.settings.core.lifecycle.events.OnDestroy; import com.android.settings.core.lifecycle.events.OnPause; import com.android.settings.core.lifecycle.events.OnResume; import com.android.settings.core.lifecycle.events.OnSaveInstanceState; import com.android.settings.core.lifecycle.events.OnStart; import com.android.settings.core.lifecycle.events.OnStop; import com.android.settings.utils.ThreadUtils; Loading Loading @@ -54,6 +57,14 @@ public class Lifecycle { } } public void onCreate(Bundle savedInstanceState) { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnCreate) { ((OnCreate) observer).onCreate(savedInstanceState); } } } public void onStart() { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnStart) { Loading @@ -78,6 +89,14 @@ public class Lifecycle { } } public void onSaveInstanceState(Bundle outState) { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnSaveInstanceState) { ((OnSaveInstanceState) observer).onSaveInstanceState(outState); } } } public void onStop() { for (LifecycleObserver observer : mObservers) { if (observer instanceof OnStop) { Loading
src/com/android/settings/core/lifecycle/ObservablePreferenceFragment.java +15 −0 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings.core.lifecycle; import android.annotation.CallSuper; import android.content.Context; import android.os.Bundle; import android.support.v14.preference.PreferenceFragment; /** Loading @@ -38,6 +39,20 @@ public abstract class ObservablePreferenceFragment extends PreferenceFragment { mLifecycle.onAttach(context); } @CallSuper @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mLifecycle.onCreate(savedInstanceState); } @CallSuper @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mLifecycle.onSaveInstanceState(outState); } @CallSuper @Override public void onStart() { Loading