Snap for 7925568 from 694d374a9c to tm-release

Change-Id: Ie32124b9017fc239a65d5e3909c6c61d219438e7
This commit is contained in:
Android Build Coastguard Worker
2021-11-18 02:09:56 +00:00
18 changed files with 131 additions and 92 deletions

View File

@@ -190,6 +190,7 @@
</receiver> </receiver>
<activity android:name=".SubSettings" <activity android:name=".SubSettings"
android:configChanges="orientation|keyboard|keyboardHidden|screenSize|screenLayout|smallestScreenSize"
android:theme="@style/Theme.SubSettings" /> android:theme="@style/Theme.SubSettings" />
<activity android:name=".Settings$CreateShortcutActivity" <activity android:name=".Settings$CreateShortcutActivity"
@@ -234,11 +235,6 @@
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" />
@@ -318,12 +314,16 @@
android:icon="@drawable/ic_homepage_network" android:icon="@drawable/ic_homepage_network"
android:exported="true" android:exported="true"
android:configChanges="orientation|keyboardHidden|screenSize"> android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter android:priority="1">
<action android:name="android.settings.WIFI_SETTINGS"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.wifi.WifiSettings" /> android:value="com.android.settings.network.NetworkProviderSettings"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_network"/> android:value="@string/menu_key_network"/>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" /> android:value="true"/>
</activity> </activity>
<!-- Keep compatibility with old shortcuts. --> <!-- Keep compatibility with old shortcuts. -->
@@ -334,9 +334,11 @@
android:icon="@drawable/ic_homepage_network" android:icon="@drawable/ic_homepage_network"
android:exported="true"> android:exported="true">
<meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.wifi.WifiSettings" /> android:value="com.android.settings.network.NetworkProviderSettings"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_network"/> android:value="@string/menu_key_network"/>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true"/>
</activity-alias> </activity-alias>
<activity <activity
@@ -346,33 +348,19 @@
android:exported="true" android:exported="true"
android:configChanges="orientation|keyboardHidden|screenSize"> android:configChanges="orientation|keyboardHidden|screenSize">
<intent-filter android:priority="1"> <intent-filter android:priority="1">
<action android:name="android.settings.NETWORK_PROVIDER_SETTINGS" /> <action android:name="android.settings.NETWORK_PROVIDER_SETTINGS"/>
<category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.DEFAULT"/>
</intent-filter> </intent-filter>
<intent-filter android:priority="1"> <intent-filter android:priority="1">
<action android:name="android.settings.WIFI_SETTINGS" /> <action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT" /> <category android:name="com.android.settings.SHORTCUT"/>
</intent-filter>
<intent-filter android:priority="1">
<action android:name="android.intent.action.MAIN" />
<category android:name="com.android.settings.SHORTCUT" />
</intent-filter> </intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS" <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.network.NetworkProviderSettings" /> android:value="com.android.settings.network.NetworkProviderSettings"/>
<meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY" <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
android:value="@string/menu_key_network"/> android:value="@string/menu_key_network"/>
<meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED" <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
android:value="true" /> android:value="true"/>
</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 <activity

View File

@@ -223,6 +223,7 @@
<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>

View File

@@ -89,9 +89,7 @@ public class Settings extends SettingsActivity {
public static class PrivateVolumeForgetActivity extends SettingsActivity { /* empty */ } public static class PrivateVolumeForgetActivity extends SettingsActivity { /* empty */ }
public static class PublicVolumeSettingsActivity extends SettingsActivity { /* empty */ } public static class PublicVolumeSettingsActivity extends SettingsActivity { /* empty */ }
public static class WifiSettingsActivity extends SettingsActivity { /* empty */ } public static class WifiSettingsActivity 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 */ }

View File

@@ -63,6 +63,9 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA
int SCREEN_SIZE = 2; int SCREEN_SIZE = 2;
} }
// Keep the last height of the scroll view in the {@link GlifLayout}
private int mLastScrollViewHeight;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@@ -143,11 +146,13 @@ public class AccessibilityScreenSizeForSetupWizardActivity extends InstrumentedA
* Scrolls to bottom while {@link ScrollView} layout changed. * Scrolls to bottom while {@link ScrollView} layout changed.
*/ */
private void scrollToBottom() { private void scrollToBottom() {
mLastScrollViewHeight = 0;
final GlifLayout layout = findViewById(R.id.setup_wizard_layout); final GlifLayout layout = findViewById(R.id.setup_wizard_layout);
final ScrollView scrollView = layout.getScrollView(); final ScrollView scrollView = layout.getScrollView();
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> { scrollView.getViewTreeObserver().addOnGlobalLayoutListener(() -> {
final int scrollViewHeight = scrollView.getHeight(); final int scrollViewHeight = scrollView.getHeight();
if (scrollViewHeight > 0) { if (scrollViewHeight > 0 && scrollViewHeight != mLastScrollViewHeight) {
mLastScrollViewHeight = scrollViewHeight;
scrollView.post(() -> { scrollView.post(() -> {
// Here is no need to show the scrolling animation. So disabled first and // Here is no need to show the scrolling animation. So disabled first and
// then enabled it after scrolling finished. // then enabled it after scrolling finished.

View File

@@ -120,7 +120,6 @@ 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;
@@ -320,7 +319,6 @@ 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(),
AutoBrightnessSettings.class.getName() AutoBrightnessSettings.class.getName()
@@ -345,7 +343,6 @@ 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(),

View File

@@ -271,12 +271,14 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false); mView = dialogInflater.inflate(R.layout.data_usage_bytes_editor, null, false);
setupPicker((EditText) mView.findViewById(R.id.bytes), setupPicker((EditText) mView.findViewById(R.id.bytes),
(Spinner) mView.findViewById(R.id.size_spinner)); (Spinner) mView.findViewById(R.id.size_spinner));
return new AlertDialog.Builder(context) Dialog dialog = new AlertDialog.Builder(context)
.setTitle(isLimit ? R.string.data_usage_limit_editor_title .setTitle(isLimit ? R.string.data_usage_limit_editor_title
: R.string.data_usage_warning_editor_title) : R.string.data_usage_warning_editor_title)
.setView(mView) .setView(mView)
.setPositiveButton(R.string.data_usage_cycle_editor_positive, this) .setPositiveButton(R.string.data_usage_cycle_editor_positive, this)
.create(); .create();
dialog.setCanceledOnTouchOutside(false);
return dialog;
} }
private void setupPicker(EditText bytesPicker, Spinner type) { private void setupPicker(EditText bytesPicker, Spinner type) {
@@ -402,10 +404,12 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
mCycleDayPicker.setValue(cycleDay); mCycleDayPicker.setValue(cycleDay);
mCycleDayPicker.setWrapSelectorWheel(true); mCycleDayPicker.setWrapSelectorWheel(true);
return builder.setTitle(R.string.data_usage_cycle_editor_title) Dialog dialog = builder.setTitle(R.string.data_usage_cycle_editor_title)
.setView(view) .setView(view)
.setPositiveButton(R.string.data_usage_cycle_editor_positive, this) .setPositiveButton(R.string.data_usage_cycle_editor_positive, this)
.create(); .create();
dialog.setCanceledOnTouchOutside(false);
return dialog;
} }
@Override @Override
@@ -466,12 +470,14 @@ public class BillingCycleSettings extends DataUsageBaseFragment implements
public Dialog onCreateDialog(Bundle savedInstanceState) { public Dialog onCreateDialog(Bundle savedInstanceState) {
final Context context = getActivity(); final Context context = getActivity();
return new AlertDialog.Builder(context) Dialog dialog = new AlertDialog.Builder(context)
.setTitle(R.string.data_usage_limit_dialog_title) .setTitle(R.string.data_usage_limit_dialog_title)
.setMessage(R.string.data_usage_limit_dialog_mobile) .setMessage(R.string.data_usage_limit_dialog_mobile)
.setPositiveButton(android.R.string.ok, this) .setPositiveButton(android.R.string.ok, this)
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.create(); .create();
dialog.setCanceledOnTouchOutside(false);
return dialog;
} }
@Override @Override

View File

@@ -129,7 +129,7 @@ public class ContextualCardsFragment extends InstrumentedFragment implements
private void registerKeyEventReceiver() { private void registerKeyEventReceiver() {
getActivity().registerReceiver(mKeyEventReceiver, getActivity().registerReceiver(mKeyEventReceiver,
new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)); new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS), Context.RECEIVER_EXPORTED);
} }
private void unregisterKeyEventReceiver() { private void unregisterKeyEventReceiver() {

View File

@@ -114,7 +114,8 @@ public abstract class EuiccOperationSidecar extends SidecarFragment {
mReceiver, mReceiver,
new IntentFilter(getReceiverAction()), new IntentFilter(getReceiverAction()),
Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS, Manifest.permission.WRITE_EMBEDDED_SUBSCRIPTIONS,
null); null,
Context.RECEIVER_EXPORTED);
} }
@Override @Override

View File

@@ -19,7 +19,6 @@ 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;
@@ -103,7 +102,7 @@ public class NetworkSelectSettings extends DashboardFragment {
@VisibleForTesting @VisibleForTesting
protected void onCreateInitialization() { protected void onCreateInitialization() {
mUseNewApi = enableNewAutoSelectNetworkUI(getContext()); mUseNewApi = enableNewAutoSelectNetworkUI(getContext());
mSubId = getSubId(); mSubId = getArguments().getInt(Settings.EXTRA_SUB_ID);
mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS); mPreferenceCategory = getPreferenceCategory(PREF_KEY_NETWORK_OPERATORS);
mStatusMessagePreference = new Preference(getContext()); mStatusMessagePreference = new Preference(getContext());
@@ -122,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 + " ,mSubId:" + mSubId); + " ,mIsAggregationEnabled:" + mIsAggregationEnabled);
} }
@Keep @Keep
@@ -176,18 +175,6 @@ 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);

View File

@@ -46,6 +46,7 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
Preference mPreference; Preference mPreference;
private TelephonyManager mTelephonyManager; private TelephonyManager mTelephonyManager;
private PhoneCallStateTelephonyCallback mTelephonyCallback; private PhoneCallStateTelephonyCallback mTelephonyCallback;
private boolean mIsVonrEnabledFromCarrierConfig = false;
private boolean mIsVonrVisibleFromCarrierConfig = false; private boolean mIsVonrVisibleFromCarrierConfig = false;
private boolean mIsNrEnableFromCarrierConfig = false; private boolean mIsNrEnableFromCarrierConfig = false;
private boolean mHas5gCapability = false; private boolean mHas5gCapability = false;
@@ -83,6 +84,9 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
if (carrierConfig == null) { if (carrierConfig == null) {
return this; return this;
} }
mIsVonrEnabledFromCarrierConfig = carrierConfig.getBoolean(
CarrierConfigManager.KEY_VONR_ENABLED_BOOL);
mIsVonrVisibleFromCarrierConfig = carrierConfig.getBoolean( mIsVonrVisibleFromCarrierConfig = carrierConfig.getBoolean(
CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL); CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL);
@@ -92,6 +96,7 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
Log.d(TAG, "mHas5gCapability: " + mHas5gCapability Log.d(TAG, "mHas5gCapability: " + mHas5gCapability
+ ",mIsNrEnabledFromCarrierConfig: " + mIsNrEnableFromCarrierConfig + ",mIsNrEnabledFromCarrierConfig: " + mIsNrEnableFromCarrierConfig
+ ",mIsVonrEnabledFromCarrierConfig: " + mIsVonrEnabledFromCarrierConfig
+ ",mIsVonrVisibleFromCarrierConfig: " + mIsVonrVisibleFromCarrierConfig); + ",mIsVonrVisibleFromCarrierConfig: " + mIsVonrVisibleFromCarrierConfig);
return this; return this;
} }
@@ -100,7 +105,10 @@ public class NrAdvancedCallingPreferenceController extends TelephonyTogglePrefer
public int getAvailabilityStatus(int subId) { public int getAvailabilityStatus(int subId) {
init(subId); init(subId);
if (mHas5gCapability && mIsNrEnableFromCarrierConfig && mIsVonrVisibleFromCarrierConfig) { if (mHas5gCapability
&& mIsNrEnableFromCarrierConfig
&& mIsVonrEnabledFromCarrierConfig
&& mIsVonrVisibleFromCarrierConfig) {
return AVAILABLE; return AVAILABLE;
} }
return CONDITIONALLY_UNAVAILABLE; return CONDITIONALLY_UNAVAILABLE;

View File

@@ -20,8 +20,9 @@ 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.content.Intent; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerExecutor; import android.os.HandlerExecutor;
import android.os.Looper; import android.os.Looper;
@@ -42,8 +43,10 @@ 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;
@@ -148,26 +151,25 @@ public class AutoSelectPreferenceController extends TelephonyTogglePreferenceCon
public boolean setChecked(boolean isChecked) { public boolean setChecked(boolean isChecked) {
if (isChecked) { if (isChecked) {
setAutomaticSelectionMode(); setAutomaticSelectionMode();
} else {
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; 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;
}
} }
@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();

View File

@@ -19,12 +19,14 @@ 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.content.Intent; import android.os.Bundle;
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;
@@ -33,8 +35,10 @@ 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;
/** /**
@@ -98,12 +102,6 @@ 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
@@ -116,6 +114,23 @@ 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)

View File

@@ -79,18 +79,20 @@ public final class PasswordUtils extends com.android.settingslib.Utils {
} }
/** Crashes the calling application and provides it with {@code message}. */ /** Crashes the calling application and provides it with {@code message}. */
public static void crashCallingApplication(IBinder activityToken, String message) { public static void crashCallingApplication(IBinder activityToken, String message,
int exceptionTypeId) {
IActivityManager am = ActivityManager.getService(); IActivityManager am = ActivityManager.getService();
try { try {
int uid = am.getLaunchedFromUid(activityToken); int uid = am.getLaunchedFromUid(activityToken);
int userId = UserHandle.getUserId(uid); int userId = UserHandle.getUserId(uid);
am.crashApplication( am.crashApplicationWithType(
uid, uid,
/* initialPid= */ -1, /* initialPid= */ -1,
getCallingAppPackageName(activityToken), getCallingAppPackageName(activityToken),
userId, userId,
message, message,
false); false,
exceptionTypeId);
} catch (RemoteException e) { } catch (RemoteException e) {
Log.v(TAG, "Could not talk to activity manager.", e); Log.v(TAG, "Could not talk to activity manager.", e);
} }

View File

@@ -29,6 +29,7 @@ import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_I
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY; import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY;
import android.app.Activity; import android.app.Activity;
import android.app.RemoteServiceException.MissingRequestPasswordComplexityPermissionException;
import android.app.admin.DevicePolicyManager; import android.app.admin.DevicePolicyManager;
import android.app.admin.DevicePolicyManager.PasswordComplexity; import android.app.admin.DevicePolicyManager.PasswordComplexity;
import android.app.admin.PasswordMetrics; import android.app.admin.PasswordMetrics;
@@ -101,7 +102,8 @@ public class SetNewPasswordActivity extends Activity implements SetNewPasswordCo
PasswordUtils.crashCallingApplication(activityToken, PasswordUtils.crashCallingApplication(activityToken,
"Must have permission " "Must have permission "
+ REQUEST_PASSWORD_COMPLEXITY + " to use extra " + REQUEST_PASSWORD_COMPLEXITY + " to use extra "
+ EXTRA_PASSWORD_COMPLEXITY); + EXTRA_PASSWORD_COMPLEXITY,
MissingRequestPasswordComplexityPermissionException.TYPE_ID);
finish(); finish();
return; return;
} }

View File

@@ -21,6 +21,7 @@ import static android.app.admin.DevicePolicyManager.EXTRA_PASSWORD_COMPLEXITY;
import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY; import static com.android.settings.password.ChooseLockSettingsHelper.EXTRA_KEY_REQUESTED_MIN_COMPLEXITY;
import android.app.RemoteServiceException.MissingRequestPasswordComplexityPermissionException;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
@@ -79,7 +80,8 @@ public class SetupChooseLockGeneric extends ChooseLockGeneric {
if (!hasPermission) { if (!hasPermission) {
PasswordUtils.crashCallingApplication(activityToken, PasswordUtils.crashCallingApplication(activityToken,
"Must have permission " + REQUEST_PASSWORD_COMPLEXITY "Must have permission " + REQUEST_PASSWORD_COMPLEXITY
+ " to use extra " + EXTRA_PASSWORD_COMPLEXITY); + " to use extra " + EXTRA_PASSWORD_COMPLEXITY,
MissingRequestPasswordComplexityPermissionException.TYPE_ID);
finish(); finish();
return; return;
} }

View File

@@ -119,7 +119,8 @@ public class TetherService extends Service {
if (mExpectedProvisionResponseAction != null) unregisterReceiver(mReceiver); if (mExpectedProvisionResponseAction != null) unregisterReceiver(mReceiver);
registerReceiver(mReceiver, new IntentFilter(responseAction), registerReceiver(mReceiver, new IntentFilter(responseAction),
android.Manifest.permission.TETHER_PRIVILEGED, null /* handler */); android.Manifest.permission.TETHER_PRIVILEGED, null /* handler */,
Context.RECEIVER_EXPORTED);
mExpectedProvisionResponseAction = responseAction; mExpectedProvisionResponseAction = responseAction;
if (DEBUG) Log.d(TAG, "registerReceiver " + responseAction); if (DEBUG) Log.d(TAG, "registerReceiver " + responseAction);
} }

View File

@@ -122,6 +122,10 @@ 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
@@ -180,11 +184,6 @@ 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

View File

@@ -80,7 +80,8 @@ public class NrAdvancedCallingPreferenceControllerTest {
mTelephonyManager).setVoNrEnabled(anyBoolean()); mTelephonyManager).setVoNrEnabled(anyBoolean());
mCarrierConfig = new PersistableBundle(); mCarrierConfig = new PersistableBundle();
doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID); doReturn(mCarrierConfig).when(mCarrierConfigManager).getConfigForSubId(SUB_ID);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, false);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true);
mCarrierConfig.putIntArray(CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY, mCarrierConfig.putIntArray(CarrierConfigManager.KEY_CARRIER_NR_AVAILABILITIES_INT_ARRAY,
new int[]{1, 2}); new int[]{1, 2});
@@ -92,7 +93,8 @@ public class NrAdvancedCallingPreferenceControllerTest {
} }
@Test @Test
public void getAvailabilityStatus_vonrDisabled_returnUnavailable() { public void getAvailabilityStatus_vonrEnabledAndVisibleDisable_returnUnavailable() {
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, true);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false);
mController.init(SUB_ID); mController.init(SUB_ID);
@@ -102,7 +104,30 @@ public class NrAdvancedCallingPreferenceControllerTest {
} }
@Test @Test
public void getAvailabilityStatus_vonrEnabled_returnAvailable() { public void getAvailabilityStatus_vonrDisabledAndVisibleDisable_returnUnavailable() {
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, false);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, false);
mController.init(SUB_ID);
assertThat(mController.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
}
@Test
public void getAvailabilityStatus_vonrDisabledAndVisibleEnable_returnUnavailable() {
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, false);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true);
mController.init(SUB_ID);
assertThat(mController.getAvailabilityStatus()).isEqualTo(
BasePreferenceController.CONDITIONALLY_UNAVAILABLE);
}
@Test
public void getAvailabilityStatus_vonrEnabledAndVisibleEnable_returnAvailable() {
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_ENABLED_BOOL, true);
mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true); mCarrierConfig.putBoolean(CarrierConfigManager.KEY_VONR_SETTING_VISIBILITY_BOOL, true);
mController.init(SUB_ID); mController.init(SUB_ID);