diff --git a/AndroidManifest.xml b/AndroidManifest.xml index a471504d77c..a41c89a58db 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -234,6 +234,11 @@ android:exported="true" android:launchMode="singleTask" android:configChanges="orientation|screenSize|keyboardHidden"> + @@ -345,6 +350,16 @@ android:value="true" /> + + + + + diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 4de795c41b5..6dd5a2ec5e5 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -91,6 +91,7 @@ public class Settings extends SettingsActivity { public static class WifiSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiSettings2Activity extends SettingsActivity { /* empty */ } public static class NetworkProviderSettingsActivity extends SettingsActivity { /* empty */ } + public static class NetworkSelectActivity extends SettingsActivity { /* empty */ } /** Activity for the Wi-Fi network details settings. */ public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ } diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java index 3c594a714c0..a9f8e3107af 100644 --- a/src/com/android/settings/core/gateway/SettingsGateway.java +++ b/src/com/android/settings/core/gateway/SettingsGateway.java @@ -119,6 +119,7 @@ import com.android.settings.network.NetworkDashboardFragment; import com.android.settings.network.NetworkProviderSettings; import com.android.settings.network.apn.ApnEditor; import com.android.settings.network.apn.ApnSettings; +import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.nfc.AndroidBeam; import com.android.settings.nfc.PaymentSettings; import com.android.settings.notification.ConfigureNotificationSettings; @@ -318,6 +319,7 @@ public class SettingsGateway { InteractAcrossProfilesDetails.class.getName(), MediaControlsSettings.class.getName(), NetworkProviderSettings.class.getName(), + NetworkSelectSettings.class.getName(), AlarmsAndRemindersDetails.class.getName(), MediaManagementAppsDetails.class.getName() }; @@ -341,6 +343,7 @@ public class SettingsGateway { Settings.WifiSettingsActivity.class.getName(), Settings.DataUsageSummaryActivity.class.getName(), Settings.NetworkProviderSettingsActivity.class.getName(), + Settings.NetworkSelectActivity.class.getName(), // Home page > Connected devices Settings.BluetoothSettingsActivity.class.getName(), Settings.WifiDisplaySettingsActivity.class.getName(), diff --git a/src/com/android/settings/network/telephony/NetworkSelectSettings.java b/src/com/android/settings/network/telephony/NetworkSelectSettings.java index c72c18ddd63..67d3171e3d6 100644 --- a/src/com/android/settings/network/telephony/NetworkSelectSettings.java +++ b/src/com/android/settings/network/telephony/NetworkSelectSettings.java @@ -19,6 +19,7 @@ package com.android.settings.network.telephony; import android.app.Activity; import android.app.settings.SettingsEnums; import android.content.Context; +import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -101,7 +102,7 @@ public class NetworkSelectSettings extends DashboardFragment { @VisibleForTesting protected void onCreateInitialization() { mUseNewApi = enableNewAutoSelectNetworkUI(getContext()); - mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID); + mSubId = getSubId(); mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS); mStatusMessagePreference = new Preference(getContext()); @@ -120,7 +121,7 @@ public class NetworkSelectSettings extends DashboardFragment { mMetricsFeatureProvider = getMetricsFeatureProvider(getContext()); mIsAggregationEnabled = enableAggregation(getContext()); Log.d(TAG, "init: mUseNewApi:" + mUseNewApi - + " ,mIsAggregationEnabled:" + mIsAggregationEnabled); + + " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId); } @Keep @@ -174,6 +175,18 @@ public class NetworkSelectSettings extends DashboardFragment { getPreferenceScreen().setEnabled(enable); } + @Keep + @VisibleForTesting + protected int getSubId() { + int subId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; + Intent intent = getActivity().getIntent(); + if (intent != null) { + subId = intent.getIntExtra(Settings.EXTRA_SUB_ID, + SubscriptionManager.INVALID_SUBSCRIPTION_ID); + } + return subId; + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); diff --git a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java index 997235c8a0c..028c4e77a78 100644 --- a/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/AutoSelectPreferenceController.java @@ -20,9 +20,8 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; import android.app.ProgressDialog; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; import android.os.Handler; import android.os.HandlerExecutor; import android.os.Looper; @@ -43,10 +42,8 @@ import androidx.preference.PreferenceScreen; import androidx.preference.SwitchPreference; import com.android.settings.R; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyTogglePreferenceController; import com.android.settingslib.utils.ThreadUtils; @@ -151,25 +148,26 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon public boolean setChecked(boolean isChecked) { if (isChecked) { setAutomaticSelectionMode(); - return false; } else { - final Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); - new SubSettingLauncher(mContext) - .setDestination(NetworkSelectSettings.class.getName()) - .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) - .setTitleRes(R.string.choose_network_title) - .setArguments(bundle) - .launch(); - return false; + if (mSwitchPreference != null) { + Intent intent = new Intent(); + intent.setClassName("com.android.settings", + "com.android.settings.Settings$NetworkSelectActivity"); + intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); + mSwitchPreference.setIntent(intent); + } } + return false; } @VisibleForTesting Future setAutomaticSelectionMode() { final long startMillis = SystemClock.elapsedRealtime(); showAutoSelectProgressBar(); - mSwitchPreference.setEnabled(false); + if (mSwitchPreference != null) { + mSwitchPreference.setIntent(null); + mSwitchPreference.setEnabled(false); + } return ThreadUtils.postOnBackgroundThread(() -> { // set network selection mode in background mTelephonyManager.setNetworkSelectionModeAutomatic(); diff --git a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java index 4047009b325..54f5ce15d72 100644 --- a/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java +++ b/src/com/android/settings/network/telephony/gsm/OpenNetworkSelectPagePreferenceController.java @@ -19,14 +19,12 @@ package com.android.settings.network.telephony.gsm; import static androidx.lifecycle.Lifecycle.Event.ON_START; import static androidx.lifecycle.Lifecycle.Event.ON_STOP; -import android.app.settings.SettingsEnums; import android.content.Context; -import android.os.Bundle; +import android.content.Intent; import android.provider.Settings; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; -import android.text.TextUtils; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleObserver; @@ -35,10 +33,8 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; -import com.android.settings.core.SubSettingLauncher; import com.android.settings.network.AllowedNetworkTypesListener; import com.android.settings.network.telephony.MobileNetworkUtils; -import com.android.settings.network.telephony.NetworkSelectSettings; import com.android.settings.network.telephony.TelephonyBasePreferenceController; /** @@ -102,6 +98,12 @@ public class OpenNetworkSelectPagePreferenceController extends super.updateState(preference); preference.setEnabled(mTelephonyManager.getNetworkSelectionMode() != TelephonyManager.NETWORK_SELECTION_MODE_AUTO); + + Intent intent = new Intent(); + intent.setClassName("com.android.settings", + "com.android.settings.Settings$NetworkSelectActivity"); + intent.putExtra(Settings.EXTRA_SUB_ID, mSubId); + preference.setIntent(intent); } @Override @@ -114,23 +116,6 @@ public class OpenNetworkSelectPagePreferenceController extends } } - @Override - public boolean handlePreferenceTreeClick(Preference preference) { - if (TextUtils.equals(preference.getKey(), getPreferenceKey())) { - final Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, mSubId); - new SubSettingLauncher(mContext) - .setDestination(NetworkSelectSettings.class.getName()) - .setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT) - .setTitleRes(R.string.choose_network_title) - .setArguments(bundle) - .launch(); - return true; - } - - return false; - } - public OpenNetworkSelectPagePreferenceController init(Lifecycle lifecycle, int subId) { mSubId = subId; mTelephonyManager = mContext.getSystemService(TelephonyManager.class) diff --git a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java index 391839cda50..6dbc4c9099e 100644 --- a/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java +++ b/tests/unit/src/com/android/settings/network/telephony/NetworkSelectSettingsTest.java @@ -122,10 +122,6 @@ public class NetworkSelectSettingsTest { public TargetClass(NetworkSelectSettingsTest env) { mTestEnv = env; - - Bundle bundle = new Bundle(); - bundle.putInt(Settings.EXTRA_SUB_ID, SUB_ID); - setArguments(bundle); } @Override @@ -184,6 +180,11 @@ public class NetworkSelectSettingsTest { protected boolean enableAggregation(Context context) { return mTestEnv.mIsAggregationEnabled; } + + @Override + protected int getSubId() { + return SUB_ID; + } } @Test