Device do network scan after user rotates NetworkSelection page
Add the networkSelectSettings fragment into new activity, and set the activity's android:configChanges as "orientation|keyboard|keyboardHidden|screenSize|screenLayout |smallestScreenSize". Bug: 204039043 Test: atest AutoSelectPreferenceControllerTest (pass) atest OpenNetworkSelectPagePreferenceControllerTest (pass) atest NetworkSelectSettingsTest (pass) Change-Id: Ic933c2294401bc50e105ddcfd2a17886d0bbefc3
This commit is contained in:
@@ -234,6 +234,11 @@
|
|||||||
android:exported="true"
|
android:exported="true"
|
||||||
android:launchMode="singleTask"
|
android:launchMode="singleTask"
|
||||||
android:configChanges="orientation|screenSize|keyboardHidden">
|
android:configChanges="orientation|screenSize|keyboardHidden">
|
||||||
|
<!-- Note: Since the framework does not support the multiple requests of network scan
|
||||||
|
from the UI, this singleTask can protect that there is only one
|
||||||
|
Settings$NetworkSelectActivity which can request the network scan.
|
||||||
|
If removing the "singleTask" in the future, please also modify the
|
||||||
|
Settings$NetworkSelectActivity's structure. -->
|
||||||
<intent-filter android:priority="1">
|
<intent-filter android:priority="1">
|
||||||
<!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. -->
|
<!-- Displays the MobileNetworkActivity and opt-in dialog for capability discovery. -->
|
||||||
<action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" />
|
<action android:name="android.telephony.ims.action.SHOW_CAPABILITY_DISCOVERY_OPT_IN" />
|
||||||
@@ -345,6 +350,16 @@
|
|||||||
android:value="true" />
|
android:value="true" />
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
|
<activity
|
||||||
|
android:name="Settings$NetworkSelectActivity"
|
||||||
|
android:label="@string/choose_network_title"
|
||||||
|
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize">
|
||||||
|
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
|
||||||
|
android:value="com.android.settings.network.telephony.NetworkSelectSettings" />
|
||||||
|
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
|
||||||
|
android:value="true" />
|
||||||
|
</activity>
|
||||||
|
|
||||||
<activity
|
<activity
|
||||||
android:name="Settings$WifiDetailsSettingsActivity"
|
android:name="Settings$WifiDetailsSettingsActivity"
|
||||||
android:label="@string/wifi_details_title"
|
android:label="@string/wifi_details_title"
|
||||||
|
@@ -223,7 +223,6 @@
|
|||||||
<Preference
|
<Preference
|
||||||
android:key="choose_network_key"
|
android:key="choose_network_key"
|
||||||
android:title="@string/choose_network_title"
|
android:title="@string/choose_network_title"
|
||||||
android:fragment="com.android.phone.NetworkSelectSetting"
|
|
||||||
settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
|
settings:controller="com.android.settings.network.telephony.gsm.OpenNetworkSelectPagePreferenceController"/>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
|
||||||
|
@@ -91,6 +91,7 @@ public class Settings extends SettingsActivity {
|
|||||||
public static class WifiSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class WifiSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class WifiSettings2Activity extends SettingsActivity { /* empty */ }
|
public static class WifiSettings2Activity extends SettingsActivity { /* empty */ }
|
||||||
public static class NetworkProviderSettingsActivity 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. */
|
/** Activity for the Wi-Fi network details settings. */
|
||||||
public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class WifiDetailsSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ }
|
public static class WifiP2pSettingsActivity extends SettingsActivity { /* empty */ }
|
||||||
|
@@ -119,6 +119,7 @@ import com.android.settings.network.NetworkDashboardFragment;
|
|||||||
import com.android.settings.network.NetworkProviderSettings;
|
import com.android.settings.network.NetworkProviderSettings;
|
||||||
import com.android.settings.network.apn.ApnEditor;
|
import com.android.settings.network.apn.ApnEditor;
|
||||||
import com.android.settings.network.apn.ApnSettings;
|
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.AndroidBeam;
|
||||||
import com.android.settings.nfc.PaymentSettings;
|
import com.android.settings.nfc.PaymentSettings;
|
||||||
import com.android.settings.notification.ConfigureNotificationSettings;
|
import com.android.settings.notification.ConfigureNotificationSettings;
|
||||||
@@ -318,6 +319,7 @@ public class SettingsGateway {
|
|||||||
InteractAcrossProfilesDetails.class.getName(),
|
InteractAcrossProfilesDetails.class.getName(),
|
||||||
MediaControlsSettings.class.getName(),
|
MediaControlsSettings.class.getName(),
|
||||||
NetworkProviderSettings.class.getName(),
|
NetworkProviderSettings.class.getName(),
|
||||||
|
NetworkSelectSettings.class.getName(),
|
||||||
AlarmsAndRemindersDetails.class.getName(),
|
AlarmsAndRemindersDetails.class.getName(),
|
||||||
MediaManagementAppsDetails.class.getName()
|
MediaManagementAppsDetails.class.getName()
|
||||||
};
|
};
|
||||||
@@ -341,6 +343,7 @@ public class SettingsGateway {
|
|||||||
Settings.WifiSettingsActivity.class.getName(),
|
Settings.WifiSettingsActivity.class.getName(),
|
||||||
Settings.DataUsageSummaryActivity.class.getName(),
|
Settings.DataUsageSummaryActivity.class.getName(),
|
||||||
Settings.NetworkProviderSettingsActivity.class.getName(),
|
Settings.NetworkProviderSettingsActivity.class.getName(),
|
||||||
|
Settings.NetworkSelectActivity.class.getName(),
|
||||||
// Home page > Connected devices
|
// Home page > Connected devices
|
||||||
Settings.BluetoothSettingsActivity.class.getName(),
|
Settings.BluetoothSettingsActivity.class.getName(),
|
||||||
Settings.WifiDisplaySettingsActivity.class.getName(),
|
Settings.WifiDisplaySettingsActivity.class.getName(),
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.network.telephony;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.settings.SettingsEnums;
|
import android.app.settings.SettingsEnums;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.Message;
|
import android.os.Message;
|
||||||
@@ -101,7 +102,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
protected void onCreateInitialization() {
|
protected void onCreateInitialization() {
|
||||||
mUseNewApi = enableNewAutoSelectNetworkUI(getContext());
|
mUseNewApi = enableNewAutoSelectNetworkUI(getContext());
|
||||||
mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID);
|
mSubId = getSubId();
|
||||||
|
|
||||||
mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS);
|
mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS);
|
||||||
mStatusMessagePreference = new Preference(getContext());
|
mStatusMessagePreference = new Preference(getContext());
|
||||||
@@ -120,7 +121,7 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
mMetricsFeatureProvider = getMetricsFeatureProvider(getContext());
|
mMetricsFeatureProvider = getMetricsFeatureProvider(getContext());
|
||||||
mIsAggregationEnabled = enableAggregation(getContext());
|
mIsAggregationEnabled = enableAggregation(getContext());
|
||||||
Log.d(TAG, "init: mUseNewApi:" + mUseNewApi
|
Log.d(TAG, "init: mUseNewApi:" + mUseNewApi
|
||||||
+ " ,mIsAggregationEnabled:" + mIsAggregationEnabled);
|
+ " ,mIsAggregationEnabled:" + mIsAggregationEnabled + " ,mSubId:" + mSubId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Keep
|
@Keep
|
||||||
@@ -174,6 +175,18 @@ public class NetworkSelectSettings extends DashboardFragment {
|
|||||||
getPreferenceScreen().setEnabled(enable);
|
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
|
@Override
|
||||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||||
super.onViewCreated(view, savedInstanceState);
|
super.onViewCreated(view, savedInstanceState);
|
||||||
|
@@ -20,9 +20,8 @@ import static androidx.lifecycle.Lifecycle.Event.ON_START;
|
|||||||
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
||||||
|
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.app.settings.SettingsEnums;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.content.Intent;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.os.HandlerExecutor;
|
import android.os.HandlerExecutor;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
@@ -43,10 +42,8 @@ import androidx.preference.PreferenceScreen;
|
|||||||
import androidx.preference.SwitchPreference;
|
import androidx.preference.SwitchPreference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
|
||||||
import com.android.settings.network.AllowedNetworkTypesListener;
|
import com.android.settings.network.AllowedNetworkTypesListener;
|
||||||
import com.android.settings.network.telephony.MobileNetworkUtils;
|
import com.android.settings.network.telephony.MobileNetworkUtils;
|
||||||
import com.android.settings.network.telephony.NetworkSelectSettings;
|
|
||||||
import com.android.settings.network.telephony.TelephonyTogglePreferenceController;
|
import com.android.settings.network.telephony.TelephonyTogglePreferenceController;
|
||||||
import com.android.settingslib.utils.ThreadUtils;
|
import com.android.settingslib.utils.ThreadUtils;
|
||||||
|
|
||||||
@@ -151,25 +148,26 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon
|
|||||||
public boolean setChecked(boolean isChecked) {
|
public boolean setChecked(boolean isChecked) {
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
setAutomaticSelectionMode();
|
setAutomaticSelectionMode();
|
||||||
return false;
|
|
||||||
} else {
|
} else {
|
||||||
final Bundle bundle = new Bundle();
|
if (mSwitchPreference != null) {
|
||||||
bundle.putInt(Settings.EXTRA_SUB_ID, mSubId);
|
Intent intent = new Intent();
|
||||||
new SubSettingLauncher(mContext)
|
intent.setClassName("com.android.settings",
|
||||||
.setDestination(NetworkSelectSettings.class.getName())
|
"com.android.settings.Settings$NetworkSelectActivity");
|
||||||
.setSourceMetricsCategory(SettingsEnums.MOBILE_NETWORK_SELECT)
|
intent.putExtra(Settings.EXTRA_SUB_ID, mSubId);
|
||||||
.setTitleRes(R.string.choose_network_title)
|
mSwitchPreference.setIntent(intent);
|
||||||
.setArguments(bundle)
|
|
||||||
.launch();
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
Future setAutomaticSelectionMode() {
|
Future setAutomaticSelectionMode() {
|
||||||
final long startMillis = SystemClock.elapsedRealtime();
|
final long startMillis = SystemClock.elapsedRealtime();
|
||||||
showAutoSelectProgressBar();
|
showAutoSelectProgressBar();
|
||||||
|
if (mSwitchPreference != null) {
|
||||||
|
mSwitchPreference.setIntent(null);
|
||||||
mSwitchPreference.setEnabled(false);
|
mSwitchPreference.setEnabled(false);
|
||||||
|
}
|
||||||
return ThreadUtils.postOnBackgroundThread(() -> {
|
return ThreadUtils.postOnBackgroundThread(() -> {
|
||||||
// set network selection mode in background
|
// set network selection mode in background
|
||||||
mTelephonyManager.setNetworkSelectionModeAutomatic();
|
mTelephonyManager.setNetworkSelectionModeAutomatic();
|
||||||
|
@@ -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_START;
|
||||||
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
import static androidx.lifecycle.Lifecycle.Event.ON_STOP;
|
||||||
|
|
||||||
import android.app.settings.SettingsEnums;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.os.Bundle;
|
import android.content.Intent;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.telephony.ServiceState;
|
import android.telephony.ServiceState;
|
||||||
import android.telephony.SubscriptionManager;
|
import android.telephony.SubscriptionManager;
|
||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
import android.text.TextUtils;
|
|
||||||
|
|
||||||
import androidx.lifecycle.Lifecycle;
|
import androidx.lifecycle.Lifecycle;
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
@@ -35,10 +33,8 @@ import androidx.preference.Preference;
|
|||||||
import androidx.preference.PreferenceScreen;
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
|
||||||
import com.android.settings.network.AllowedNetworkTypesListener;
|
import com.android.settings.network.AllowedNetworkTypesListener;
|
||||||
import com.android.settings.network.telephony.MobileNetworkUtils;
|
import com.android.settings.network.telephony.MobileNetworkUtils;
|
||||||
import com.android.settings.network.telephony.NetworkSelectSettings;
|
|
||||||
import com.android.settings.network.telephony.TelephonyBasePreferenceController;
|
import com.android.settings.network.telephony.TelephonyBasePreferenceController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -102,6 +98,12 @@ public class OpenNetworkSelectPagePreferenceController extends
|
|||||||
super.updateState(preference);
|
super.updateState(preference);
|
||||||
preference.setEnabled(mTelephonyManager.getNetworkSelectionMode()
|
preference.setEnabled(mTelephonyManager.getNetworkSelectionMode()
|
||||||
!= TelephonyManager.NETWORK_SELECTION_MODE_AUTO);
|
!= 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
|
@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) {
|
public OpenNetworkSelectPagePreferenceController init(Lifecycle lifecycle, int subId) {
|
||||||
mSubId = subId;
|
mSubId = subId;
|
||||||
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
|
mTelephonyManager = mContext.getSystemService(TelephonyManager.class)
|
||||||
|
@@ -122,10 +122,6 @@ public class NetworkSelectSettingsTest {
|
|||||||
|
|
||||||
public TargetClass(NetworkSelectSettingsTest env) {
|
public TargetClass(NetworkSelectSettingsTest env) {
|
||||||
mTestEnv = env;
|
mTestEnv = env;
|
||||||
|
|
||||||
Bundle bundle = new Bundle();
|
|
||||||
bundle.putInt(Settings.EXTRA_SUB_ID, SUB_ID);
|
|
||||||
setArguments(bundle);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -184,6 +180,11 @@ public class NetworkSelectSettingsTest {
|
|||||||
protected boolean enableAggregation(Context context) {
|
protected boolean enableAggregation(Context context) {
|
||||||
return mTestEnv.mIsAggregationEnabled;
|
return mTestEnv.mIsAggregationEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getSubId() {
|
||||||
|
return SUB_ID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user