diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 214d32a3c17..9986e34d7c2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1846,7 +1846,7 @@ android:exported="true" android:clearTaskOnLaunch="true" android:theme="@style/Theme.Settings.NoActionBar"> - + diff --git a/res/values/strings.xml b/res/values/strings.xml index 27f57a72f1e..cd5f71aafae 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5253,6 +5253,14 @@ Switch to accessibility button Use triple-tap + + This may slow down your keyboard + + When using triple-tap to magnify part of your screen, you may notice issues over the keyboard.\n\nTo avoid this, you can change your magnification shortcut from triple-tap to another option.\nChange setting + + Continue anyway + + Cancel Magnification settings diff --git a/res/xml/zen_mode_sound_vibration_settings.xml b/res/xml/zen_mode_sound_vibration_settings.xml index 74107168623..2db42ac498e 100644 --- a/res/xml/zen_mode_sound_vibration_settings.xml +++ b/res/xml/zen_mode_sound_vibration_settings.xml @@ -19,36 +19,31 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/zen_category_exceptions" > - + + - - + + - - + + - - + + - - - - - - - + + diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java index ab3ed20606b..ff8b4be390e 100644 --- a/src/com/android/settings/location/LocationSettings.java +++ b/src/com/android/settings/location/LocationSettings.java @@ -20,8 +20,12 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.WORK_PROF import android.app.settings.SettingsEnums; import android.content.Context; +import android.database.ContentObserver; import android.location.SettingInjectorService; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; +import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceGroup; @@ -66,6 +70,7 @@ public class LocationSettings extends DashboardFragment implements private LocationSwitchBarController mSwitchBarController; private LocationEnabler mLocationEnabler; private RecentLocationAccessPreferenceController mController; + private ContentObserver mContentObserver; @Override public int getMetricsCategory() { @@ -82,6 +87,16 @@ public class LocationSettings extends DashboardFragment implements mSwitchBarController = new LocationSwitchBarController(activity, switchBar, getSettingsLifecycle()); mLocationEnabler = new LocationEnabler(getContext(), this, getSettingsLifecycle()); + mContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())) { + @Override + public void onChange(boolean selfChange) { + mController.updateShowSystem(); + } + }; + getContentResolver().registerContentObserver( + Settings.Secure.getUriFor( + Settings.Secure.LOCATION_SHOW_SYSTEM_OPS), /* notifyForDescendants= */ + false, mContentObserver); } @Override @@ -97,11 +112,9 @@ public class LocationSettings extends DashboardFragment implements } @Override - public void onPause() { - super.onPause(); - if (mController != null) { - mController.clearPreferenceList(); - } + public void onDestroy() { + super.onDestroy(); + getContentResolver().unregisterContentObserver(mContentObserver); } @Override diff --git a/src/com/android/settings/location/RecentLocationAccessPreferenceController.java b/src/com/android/settings/location/RecentLocationAccessPreferenceController.java index ea3704cccc0..18221d0f409 100644 --- a/src/com/android/settings/location/RecentLocationAccessPreferenceController.java +++ b/src/com/android/settings/location/RecentLocationAccessPreferenceController.java @@ -28,6 +28,7 @@ import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceScreen; import com.android.settings.R; +import com.android.settings.core.BasePreferenceController; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.profileselector.ProfileSelectFragment; import com.android.settingslib.applications.RecentAppOpsAccess; @@ -40,12 +41,15 @@ import java.util.List; /** * Preference controller that handles the display of apps that access locations. */ -public class RecentLocationAccessPreferenceController extends LocationBasePreferenceController { +public class RecentLocationAccessPreferenceController extends LocationBasePreferenceController + implements BasePreferenceController.UiBlocker { public static final int MAX_APPS = 3; @VisibleForTesting RecentAppOpsAccess mRecentLocationApps; private PreferenceCategory mCategoryRecentLocationRequests; private int mType = ProfileSelectFragment.ProfileType.ALL; + private boolean mShowSystem = false; + private boolean mSystemSettingChanged = false; private static class PackageEntryClickedListener implements Preference.OnPreferenceClickListener { @@ -80,23 +84,32 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer RecentAppOpsAccess recentLocationApps) { super(context, key); mRecentLocationApps = recentLocationApps; + mShowSystem = Settings.Secure.getInt(mContext.getContentResolver(), + Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, 0) == 1; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mCategoryRecentLocationRequests = screen.findPreference(getPreferenceKey()); + loadRecentAccesses(); } @Override public void updateState(Preference preference) { + // Only reload the recent accesses in updateState if the system setting has changed. + if (mSystemSettingChanged) { + loadRecentAccesses(); + mSystemSettingChanged = false; + } + } + + private void loadRecentAccesses() { mCategoryRecentLocationRequests.removeAll(); final Context prefContext = mCategoryRecentLocationRequests.getContext(); final List recentLocationAccesses = new ArrayList<>(); final UserManager userManager = UserManager.get(mContext); - final boolean showSystem = Settings.Secure.getInt(mContext.getContentResolver(), - Settings.Secure.LOCATION_SHOW_SYSTEM_OPS, 0) == 1; - for (RecentAppOpsAccess.Access access : mRecentLocationApps.getAppListSorted(showSystem)) { + for (RecentAppOpsAccess.Access access : mRecentLocationApps.getAppListSorted(mShowSystem)) { if (isRequestMatchesProfileType(userManager, access, mType)) { recentLocationAccesses.add(access); if (recentLocationAccesses.size() == MAX_APPS) { @@ -177,4 +190,14 @@ public class RecentLocationAccessPreferenceController extends LocationBasePrefer } return false; } + + /** + * Update the state of the showSystem setting flag and load the new results. + */ + void updateShowSystem() { + mSystemSettingChanged = true; + mShowSystem = !mShowSystem; + clearPreferenceList(); + loadRecentAccesses(); + } } diff --git a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java index 5f208949e52..ec48c82ce4a 100644 --- a/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java +++ b/src/com/android/settings/network/telephony/RenameMobileNetworkDialogFragment.java @@ -184,7 +184,10 @@ public class RenameMobileNetworkDialogFragment extends InstrumentedDialogFragmen phoneTitle.setVisibility(info.isOpportunistic() ? View.GONE : View.VISIBLE); final TextView phoneNumber = view.findViewById(R.id.number_value); - phoneNumber.setText(DeviceInfoUtils.getBidiFormattedPhoneNumber(getContext(), info)); + final String pn = DeviceInfoUtils.getBidiFormattedPhoneNumber(getContext(), info); + if (!TextUtils.isEmpty(pn)) { + phoneNumber.setText(pn); + } } @Override diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java index 8614c53d4a6..0f2eb66bcea 100644 --- a/src/com/android/settings/users/UserSettings.java +++ b/src/com/android/settings/users/UserSettings.java @@ -1102,6 +1102,7 @@ public class UserSettings extends SettingsPreferenceFragment mUserListCategory.setTitle(R.string.user_list_title); } else { mUserListCategory.setTitle(null); + mUserListCategory.setLayoutResource(R.layout.empty_view); } // Remove everything from mUserListCategory and add new users. diff --git a/tests/robotests/src/com/android/settings/location/LocationSettingsTest.java b/tests/robotests/src/com/android/settings/location/LocationSettingsTest.java index 3d624c0edd6..aae8cec8170 100644 --- a/tests/robotests/src/com/android/settings/location/LocationSettingsTest.java +++ b/tests/robotests/src/com/android/settings/location/LocationSettingsTest.java @@ -20,6 +20,7 @@ import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.content.ContentResolver; import android.content.Context; import android.os.Bundle; @@ -41,6 +42,8 @@ public class LocationSettingsTest { private SettingsActivity mActivity; @Mock private SettingsMainSwitchBar mSwitchBar; + @Mock + private ContentResolver mContentResolver; private Context mContext; private LocationSettings mLocationSettings; @@ -52,6 +55,7 @@ public class LocationSettingsTest { mLocationSettings = spy(new LocationSettings()); doReturn(mActivity).when(mLocationSettings).getActivity(); doReturn(mContext).when(mLocationSettings).getContext(); + doReturn(mContentResolver).when(mActivity).getContentResolver(); when(mActivity.getSwitchBar()).thenReturn(mSwitchBar); }