Snap for 7878308 from e5129de80c to tm-release

Change-Id: Ia03a1039a8f7499d29afb64b525310b21734ba36
This commit is contained in:
Android Build Coastguard Worker
2021-11-03 01:08:51 +00:00
149 changed files with 1056 additions and 303 deletions

View File

@@ -1951,8 +1951,13 @@
android:screenOrientation="portrait"/>
<activity android:name=".biometrics.face.FaceEnrollIntroduction"
android:exported="false"
android:screenOrientation="portrait"/>
android:exported="true"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.settings.FACE_ENROLL"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
<activity android:name=".biometrics.face.FaceEnrollEducation"
android:exported="false"

View File

@@ -23,6 +23,7 @@ import android.content.Context;
import android.os.UserHandle;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -57,4 +58,9 @@ public class AccessibilityShortcutPreferenceController extends TogglePreferenceC
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -26,6 +26,7 @@ import android.content.Context;
import android.provider.Settings;
import android.view.accessibility.AccessibilityManager;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.accessibility.AccessibilityUtils;
@@ -98,6 +99,11 @@ public class AccessibilitySlicePreferenceController extends TogglePreferenceCont
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
private AccessibilityServiceInfo getAccessibilityServiceInfo() {
final AccessibilityManager accessibilityManager = mContext.getSystemService(
AccessibilityManager.class);

View File

@@ -22,6 +22,7 @@ import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class DisableAnimationsPreferenceController extends TogglePreferenceController {
@@ -71,4 +72,9 @@ public class DisableAnimationsPreferenceController extends TogglePreferenceContr
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.graphics.fonts.FontStyle;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/** PreferenceController for displaying all text in bold. */
@@ -47,4 +48,9 @@ public class FontWeightAdjustmentPreferenceController extends TogglePreferenceCo
return Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.FONT_WEIGHT_ADJUSTMENT, (isChecked ? BOLD_TEXT_ADJUSTMENT : 0));
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.accessibility;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class HighTextContrastPreferenceController extends TogglePreferenceController {
@@ -43,4 +44,9 @@ public class HighTextContrastPreferenceController extends TogglePreferenceContro
return Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.ACCESSIBILITY_HIGH_TEXT_CONTRAST_ENABLED, (isChecked ? 1 : 0));
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -21,6 +21,7 @@ import android.provider.Settings;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class LargePointerIconPreferenceController extends TogglePreferenceController {
@@ -50,4 +51,9 @@ public class LargePointerIconPreferenceController extends TogglePreferenceContro
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -23,6 +23,7 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.view.RotationPolicy;
import com.android.internal.view.RotationPolicy.RotationPolicyListener;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -61,6 +62,11 @@ public class LockScreenRotationPreferenceController extends TogglePreferenceCont
return RotationPolicy.isRotationSupported(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override
public void onStop() {
if (mRotationPolicyListener != null) {

View File

@@ -76,6 +76,11 @@ public class MagnificationGesturesPreferenceController extends TogglePreferenceC
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override
public CharSequence getSummary() {
int resId = 0;

View File

@@ -82,6 +82,11 @@ public class MagnificationNavbarPreferenceController extends TogglePreferenceCon
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override
public CharSequence getSummary() {
int resId = 0;

View File

@@ -21,6 +21,7 @@ import android.provider.Settings;
import android.view.KeyCharacterMap;
import android.view.KeyEvent;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController;
@@ -51,4 +52,9 @@ public class PowerButtonEndsCallPreferenceController extends TogglePreferenceCon
return !KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_POWER)
|| !Utils.isVoiceCapable(mContext) ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.UserHandle;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -47,4 +48,9 @@ public class PrimaryMonoPreferenceController extends TogglePreferenceController
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -22,6 +22,7 @@ import android.provider.Settings;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/** PreferenceController for persisting feature activation state after a restart. */
@@ -62,4 +63,9 @@ public class ReduceBrightColorsPersistencePreferenceController extends TogglePre
super.updateState(preference);
preference.setEnabled(mColorDisplayManager.isReduceBrightColorsActivated());
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
}

View File

@@ -94,6 +94,11 @@ public class ReduceBrightColorsPreferenceController extends TogglePreferenceCont
mPreference = screen.findPreference(getPreferenceKey());
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accessibility;
}
@Override
public void onStart() {
mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(

View File

@@ -22,6 +22,7 @@ import android.os.UserHandle;
import android.provider.Settings;
import android.util.Log;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import java.util.Set;
@@ -71,6 +72,11 @@ public class CrossProfileCalendarPreferenceController extends TogglePreferenceCo
CROSS_PROFILE_CALENDAR_ENABLED, value, mManagedUser.getIdentifier());
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_accounts;
}
static boolean isCrossProfileCalendarDisallowedByAdmin(Context context, int userId) {
final Context managedProfileContext = createPackageContextAsUser(context, userId);
final DevicePolicyManager dpm = managedProfileContext.getSystemService(

View File

@@ -16,33 +16,25 @@
package com.android.settings.accounts;
import android.app.admin.DevicePolicyManager;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.util.Log;
import androidx.preference.Preference;
import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.Indexable;
import com.android.settingslib.search.SearchIndexable;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* Setting page for managed profile.

View File

@@ -19,6 +19,7 @@ package com.android.settings.applications.managedomainurls;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class InstantAppWebActionPreferenceController extends TogglePreferenceController {
@@ -43,4 +44,9 @@ public class InstantAppWebActionPreferenceController extends TogglePreferenceCon
return Settings.Secure.putInt(mContext.getContentResolver(),
Settings.Secure.INSTANT_APPS_ENABLED, isChecked ? 1 : 0);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_apps;
}
}

View File

@@ -27,6 +27,7 @@ import android.util.Log;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class AutoRestorePreferenceController extends TogglePreferenceController {
@@ -84,4 +85,9 @@ public class AutoRestorePreferenceController extends TogglePreferenceController
return result;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -91,4 +91,10 @@ public class BiometricSettingsAppPreferenceController extends TogglePreferenceCo
public final boolean isSliceable() {
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
}

View File

@@ -73,4 +73,10 @@ public class BiometricSettingsKeyguardPreferenceController extends TogglePrefere
public final boolean isSliceable() {
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
}

View File

@@ -51,4 +51,10 @@ public abstract class FaceSettingsPreferenceController extends TogglePreferenceC
public final boolean isSliceable() {
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
}

View File

@@ -98,7 +98,8 @@ public class BluetoothSliceBuilder {
SettingsSlicesContract.KEY_BLUETOOTH).build();
return SliceBuilderUtils.buildSearchResultPageIntent(context,
BluetoothDashboardFragment.class.getName(), null /* key */, screenTitle,
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY)
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,
R.string.menu_key_connected_devices)
.setClassName(context.getPackageName(), SubSettings.class.getName())
.setData(contentUri);
}

View File

@@ -89,4 +89,7 @@ public abstract class TogglePreferenceController extends BasePreferenceControlle
public boolean isPublicSlice() {
return false;
}
@Override
public abstract int getSliceHighlightMenuRes();
}

View File

@@ -117,6 +117,12 @@ public class LocationTimeZoneDetectionPreferenceController
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
@Override
public int getAvailabilityStatus() {
TimeZoneCapabilities timeZoneCapabilities =

View File

@@ -19,6 +19,7 @@ package com.android.settings.development.transcode;
import android.content.Context;
import android.os.SystemProperties;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -48,4 +49,9 @@ public class TranscodeDefaultOptionPreferenceController extends TogglePreference
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.SystemProperties;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -50,4 +51,9 @@ public class TranscodeDisableCachePreferenceController extends TogglePreferenceC
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.development.transcode;
import android.content.Context;
import android.os.SystemProperties;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -49,4 +50,9 @@ public class TranscodeGlobalTogglePreferenceController extends TogglePreferenceC
SystemProperties.set(TRANSCODE_ENABLED_PROP_KEY, String.valueOf(isChecked));
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.os.SystemProperties;
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -50,4 +51,9 @@ public class TranscodeNotificationPreferenceController extends TogglePreferenceC
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.development.transcode;
import android.content.Context;
import android.os.SystemProperties;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -48,4 +49,9 @@ public class TranscodeUserControlPreferenceController extends TogglePreferenceCo
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -106,4 +106,9 @@ public class AlwaysOnDisplaySlice implements CustomSliceable {
public Intent getIntent() {
return null;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
}

View File

@@ -67,6 +67,11 @@ public class AmbientDisplayAlwaysOnPreferenceController extends TogglePreference
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public boolean isChecked() {
return getConfig().alwaysOnEnabled(MY_USER);

View File

@@ -25,6 +25,7 @@ import android.text.TextUtils;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -100,4 +101,9 @@ public class AmbientDisplayNotificationsPreferenceController extends
return mConfig;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
}

View File

@@ -61,4 +61,9 @@ public class AutoBrightnessPreferenceController extends TogglePreferenceControll
? R.string.auto_brightness_summary_on
: R.string.auto_brightness_summary_off);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
}

View File

@@ -20,6 +20,7 @@ import android.text.TextUtils;
import androidx.preference.Preference;
import com.android.internal.view.RotationPolicy;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
@@ -86,6 +87,11 @@ public class AutoRotatePreferenceController extends TogglePreferenceController i
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public boolean isChecked() {
return !RotationPolicy.isRotationLocked(mContext);

View File

@@ -70,6 +70,11 @@ public class ControlsPrivacyPreferenceController extends TogglePreferenceControl
refreshSummary(preference);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private boolean isEnabled() {
return isControlsAvailable();
}

View File

@@ -95,6 +95,11 @@ public class DarkUIPreferenceController extends TogglePreferenceController imple
return mUiModeManager.setNightModeActivated(isChecked);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private void showDarkModeDialog() {
final DarkUIInfoDialogFragment frag = new DarkUIInfoDialogFragment();
if (mFragment != null && mFragment.getFragmentManager() != null) {

View File

@@ -21,19 +21,19 @@ import android.hardware.display.ColorDisplayManager;
import android.net.Uri;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import android.provider.Settings.Secure;
import android.provider.Settings.System;
import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
import com.android.settingslib.core.lifecycle.events.OnStop;
import com.android.settings.core.TogglePreferenceController;
public class DisplayWhiteBalancePreferenceController extends TogglePreferenceController
implements LifecycleObserver, OnStart, OnStop {
@@ -62,6 +62,11 @@ public class DisplayWhiteBalancePreferenceController extends TogglePreferenceCon
return getColorDisplayManager().setDisplayWhiteBalanceEnabled(isChecked);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public void onStart() {
if (!isAvailable()) {

View File

@@ -24,6 +24,7 @@ import android.widget.Switch;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -65,6 +66,11 @@ public class NightDisplayActivationPreferenceController extends
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);

View File

@@ -23,6 +23,7 @@ import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.SliderPreferenceController;
import com.android.settings.widget.SeekBarPreference;
@@ -55,6 +56,11 @@ public class NightDisplayIntensityPreferenceController extends SliderPreferenceC
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);

View File

@@ -95,6 +95,11 @@ public class NightDisplayPreferenceController extends TogglePreferenceController
preference.setSummary(mTimeFormatter.getAutoModeSummary(mContext, mColorDisplayManager));
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public void onActivated(boolean activated) {
updateState(mPreference);

View File

@@ -119,6 +119,11 @@ public class PeakRefreshRatePreferenceController extends TogglePreferenceControl
mContext.getContentResolver(), Settings.System.PEAK_REFRESH_RATE, peakRefreshRate);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public void onStart() {
mDeviceConfigDisplaySettings.startListening();

View File

@@ -43,6 +43,7 @@ import androidx.preference.PreferenceScreen;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.view.RotationPolicy;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -157,6 +158,11 @@ public class SmartAutoRotateController extends TogglePreferenceController implem
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
static boolean isRotationResolverServiceAvailable(Context context) {
final PackageManager packageManager = context.getPackageManager();
final String resolvePackage = packageManager.getRotationResolverPackageName();

View File

@@ -22,7 +22,6 @@ import static android.provider.Settings.Secure.CAMERA_AUTOROTATE;
import static com.android.settings.display.SmartAutoRotateController.hasSufficientPermission;
import static com.android.settings.display.SmartAutoRotateController.isRotationResolverServiceAvailable;
import android.text.TextUtils;
import android.app.settings.SettingsEnums;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -32,6 +31,7 @@ import android.hardware.SensorPrivacyManager;
import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -90,6 +90,11 @@ public class SmartAutoRotatePreferenceController extends TogglePreferenceControl
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public void displayPreference(PreferenceScreen screen) {
super.displayPreference(screen);

View File

@@ -72,6 +72,11 @@ public class WalletPrivacyPreferenceController extends TogglePreferenceControlle
refreshSummary(preference);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private boolean isEnabled() {
return mClient.isWalletServiceAvailable();
}

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.widget.SettingsMainSwitchPreferenceController;
@@ -67,4 +68,9 @@ public class StartNowPreferenceController extends SettingsMainSwitchPreferenceCo
}
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
}

View File

@@ -52,6 +52,12 @@ public class EmergencyGestureSoundPreferenceController extends TogglePreferenceC
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
@Override
public boolean isChecked() {
return mEmergencyNumberUtils.getEmergencyGestureSoundEnabled();

View File

@@ -117,6 +117,12 @@ public class FlashlightSlice implements CustomSliceable {
return null;
}
@Override
public int getSliceHighlightMenuRes() {
// no landing page in Settings
return 0;
}
private static String getCameraId(Context context) throws CameraAccessException {
final CameraManager cameraManager = context.getSystemService(CameraManager.class);
final String[] ids = cameraManager.getCameraIdList();

View File

@@ -383,13 +383,15 @@ public class AdvancedPowerUsageDetail extends DashboardFragment implements
footerString = context.getString(R.string.manager_battery_usage_footer);
}
mFooterPreference.setTitle(footerString);
final Intent helpIntent = HelpUtils.getHelpIntent(context, context.getString(
R.string.help_url_app_usage_settings), /*backupContext=*/ "");
if (helpIntent != null) {
mFooterPreference.setLearnMoreAction(v ->
startActivityForResult(HelpUtils.getHelpIntent(context,
context.getString(R.string.help_url_app_usage_settings),
/*backupContext=*/ ""), /*requestCode=*/ 0));
startActivityForResult(helpIntent, /*requestCode=*/ 0));
mFooterPreference.setLearnMoreContentDescription(
context.getString(R.string.manager_battery_usage_link_a11y));
}
}
@Override
public int getMetricsCategory() {

View File

@@ -526,8 +526,9 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
? mTrapezoidColor
: mSelectedIndex == index || mSelectedIndex == SELECTED_INDEX_ALL
? mTrapezoidSolidColor : mTrapezoidColor;
final boolean isHover = mHoveredIndex == index && isValidToDraw(mHoveredIndex);
mTrapezoidPaint.setColor(isHover ? mTrapezoidHoverColor : trapezoidColor);
final boolean isHoverState =
mIsSlotsClickabled && mHoveredIndex == index && isValidToDraw(mHoveredIndex);
mTrapezoidPaint.setColor(isHoverState ? mTrapezoidHoverColor : trapezoidColor);
final float leftTop = round(trapezoidBottom - mLevels[index] * unitHeight);
final float rightTop = round(trapezoidBottom - mLevels[index + 1] * unitHeight);

View File

@@ -24,6 +24,7 @@ import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.overlay.FeatureFactory;
@@ -61,6 +62,11 @@ public class SmartBatteryPreferenceController extends BasePreferenceController i
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);

View File

@@ -118,6 +118,11 @@ public class BatterySaverButtonPreferenceController extends
false /* needFirstTimeWarning */);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
@Override
public void onPowerSaveModeChanged() {
mHandler.postDelayed(() -> onPowerSaveModeChangedInternal(),

View File

@@ -8,6 +8,7 @@ import android.text.TextUtils;
import androidx.preference.Preference;
import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
@@ -59,4 +60,9 @@ public class BatterySaverStickyPreferenceController extends TogglePreferenceCont
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
}

View File

@@ -22,6 +22,7 @@ import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_3BUTTON_OVE
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -58,4 +59,9 @@ public class ButtonNavigationSettingsAssistController extends TogglePreferenceCo
return UNSUPPORTED_ON_DEVICE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -19,6 +19,7 @@ package com.android.settings.gestures;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -50,4 +51,9 @@ public class GestureNavigationSettingsAssistController extends TogglePreferenceC
return SystemNavigationPreferenceController.isGestureAvailable(mContext) ? AVAILABLE
: UNSUPPORTED_ON_DEVICE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -78,6 +78,11 @@ public abstract class GesturePreferenceController extends TogglePreferenceContro
}
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
protected abstract String getVideoPrefKey();
protected boolean canHandleClicks() {

View File

@@ -25,10 +25,13 @@ import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.search.BaseSearchIndexProvider;
import com.android.settingslib.search.SearchIndexable;
import java.util.List;
@SearchIndexable
public class GestureSettings extends DashboardFragment {
private static final String TAG = "GestureSettings";
private static final String PREF_KEY_PREVENT_RINGING = "gesture_prevent_ringing_summary";
private AmbientDisplayConfiguration mAmbientDisplayConfig;
@@ -63,5 +66,13 @@ public class GestureSettings extends DashboardFragment {
}
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
new BaseSearchIndexProvider(R.xml.gestures);
new BaseSearchIndexProvider(R.xml.gestures) {
@Override
public List<String> getNonIndexableKeys(Context context) {
final List<String> keys = super.getNonIndexableKeys(context);
// de-duplicated due to another same entry in Sound page
keys.add(PREF_KEY_PREVENT_RINGING);
return keys;
}
};
}

View File

@@ -120,6 +120,11 @@ public class LongPressPowerButtonPreferenceController extends TogglePreferenceCo
return false;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
private void refreshStateDisplay() {
if (mAssistSwitch != null) {
mAssistSwitch.setSummary(getSummary());

View File

@@ -21,6 +21,7 @@ import android.net.Uri;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.widget.SettingsMainSwitchPreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnStart;
@@ -92,4 +93,9 @@ public class OneHandedMainSwitchPreferenceController extends
mPreference.setChecked(isChecked());
}
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
}

View File

@@ -137,6 +137,11 @@ public class PreventRingingParentPreferenceController extends TogglePreferenceCo
return UNSUPPORTED_ON_DEVICE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_sound;
}
@Override
public void onStart() {
if (mSettingObserver != null) {

View File

@@ -147,11 +147,17 @@ public class BatteryFixSlice implements CustomSliceable {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
PowerUsageSummary.class.getName(), BatteryTipPreferenceController.PREF_NAME,
screenTitle,
SettingsEnums.SLICE)
SettingsEnums.SLICE,
this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(contentUri);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_battery;
}
@Override
public void onNotifyChange(Intent intent) {
}

View File

@@ -130,11 +130,17 @@ public class BluetoothDevicesSlice implements CustomSliceable {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
ConnectedDeviceDashboardFragment.class.getName(), "" /* key */,
screenTitle,
SettingsEnums.SLICE)
SettingsEnums.SLICE,
this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(getUri());
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override
public void onNotifyChange(Intent intent) {
final boolean enableBluetooth = intent.getBooleanExtra(EXTRA_ENABLE_BLUETOOTH, false);

View File

@@ -117,10 +117,16 @@ public class ContextualAdaptiveSleepSlice implements CustomSliceable {
final Uri contentUri = new Uri.Builder().appendPath(PREF_NAME).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
ScreenTimeoutSettings.class.getName(), PREF_NAME, screenTitle.toString(),
SettingsEnums.SLICE).setClassName(mContext.getPackageName(),
SettingsEnums.SLICE, this)
.setClassName(mContext.getPackageName(),
SubSettings.class.getName()).setData(contentUri);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */, intent,

View File

@@ -148,6 +148,11 @@ public class DarkThemeSlice implements CustomSliceable {
return null;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_display;
}
@Override
public Class getBackgroundWorkerClass() {
return DarkThemeWorker.class;

View File

@@ -133,13 +133,18 @@ public class FaceSetupSlice implements CustomSliceable {
SecuritySettings.class.getName(),
FaceStatusPreferenceController.KEY_FACE_SETTINGS,
mContext.getText(R.string.security_settings_face_settings_enroll).toString(),
SettingsEnums.SLICE)
SettingsEnums.SLICE, this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName());
} else {
return new Intent(mContext, FaceReEnrollDialog.class);
}
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_security;
}
private static RowBuilder buildRowBuilder(CharSequence title, CharSequence subTitle,
IconCompat icon, Context context, Intent intent) {
final SliceAction primarySliceAction = SliceAction.createDeeplink(

View File

@@ -109,11 +109,17 @@ public class LowStorageSlice implements CustomSliceable {
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
StorageDashboardFragment.class.getName(), "" /* key */,
screenTitle,
SettingsEnums.SLICE)
SettingsEnums.SLICE,
this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(CustomSliceRegistry.LOW_STORAGE_SLICE_URI);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_storage;
}
private RowBuilder buildRowBuilder(CharSequence title, String summary, IconCompat icon) {
final SliceAction primarySliceAction = SliceAction.createDeeplink(
PendingIntent.getActivity(mContext, 0, getIntent(), PendingIntent.FLAG_IMMUTABLE),

View File

@@ -100,6 +100,11 @@ public class GameControllerPreferenceController extends TogglePreferenceControll
Settings.System.VIBRATE_INPUT_DEVICES, isChecked ? 1 : 0);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_system;
}
@Override
public void onInputDeviceAdded(int deviceId) {
updateState(mPreference);

View File

@@ -1,5 +1,6 @@
# Bug component: 34867
include platform/frameworks/base:/services/core/java/com/android/server/inputmethod/OWNERS
include /OWNERS
# Settings for physical keyboard and game pad are better to be reviewed by the input team
per-file GameControllerPreferenceController.java = file: platform/frameworks/base:/services/core/java/com/android/server/input/OWNERS

View File

@@ -67,6 +67,11 @@ public class BluetoothScanningMainSwitchPreferenceController extends TogglePrefe
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != isChecked()) {

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.pm.PackageManager;
import android.provider.DeviceConfig;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController;
@@ -54,4 +55,9 @@ public class LocationIndicatorsPreferenceController extends TogglePreferenceCont
return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LOCATION)
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
}

View File

@@ -88,11 +88,16 @@ public class LocationSlice implements CustomSliceable {
final Uri contentUri = new Uri.Builder().appendPath(KEY_LOCATION).build();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
LocationSettings.class.getName(), KEY_LOCATION, screenTitle,
SettingsEnums.LOCATION)
SettingsEnums.LOCATION, this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(contentUri);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
private PendingIntent getPrimaryAction() {
final Intent intent = getIntent();
return PendingIntent.getActivity(mContext, 0 /* requestCode */,

View File

@@ -68,6 +68,11 @@ public class WifiScanningMainSwitchPreferenceController extends TogglePreference
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_location;
}
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (isChecked != isChecked()) {

View File

@@ -92,6 +92,11 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
return null;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override
public Class getBackgroundWorkerClass() {
return MediaOutputIndicatorWorker.class;

View File

@@ -181,7 +181,9 @@ public class RemoteMediaSlice implements CustomSliceable {
final Intent intent = SliceBuilderUtils.buildSearchResultPageIntent(mContext,
SoundSettings.class.getName(),
id,
mContext.getText(R.string.sound_settings).toString(), 0);
mContext.getText(R.string.sound_settings).toString(),
0 /* sourceMetricsCategory */,
R.string.menu_key_sound);
intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
intent.setData(contentUri);
final PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, intent,
@@ -221,6 +223,11 @@ public class RemoteMediaSlice implements CustomSliceable {
return null;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override
public Class getBackgroundWorkerClass() {
return MediaDeviceUpdateWorker.class;

View File

@@ -22,6 +22,7 @@ import android.provider.Settings;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.widget.SettingsMainSwitchPreferenceController;
/**
@@ -62,4 +63,9 @@ public class AdaptiveConnectivityTogglePreferenceController extends
mWifiManager.setWifiScoringEnabled(isChecked);
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
}

View File

@@ -120,6 +120,11 @@ public class AirplaneModePreferenceController extends TogglePreferenceController
return isAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override
public void onStart() {
if (isAvailable()) {

View File

@@ -22,6 +22,7 @@ import androidx.lifecycle.Lifecycle;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.wifi.WifiPickerTrackerHelper;
@@ -88,6 +89,11 @@ public class CarrierWifiTogglePreferenceController extends TogglePreferenceContr
updateCarrierNetworkPreference();
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override
public void onWifiStateChanged() {
updateCarrierNetworkPreference();

View File

@@ -290,7 +290,7 @@ public class ProviderModelSlice extends WifiSlice {
final String screenTitle = mContext.getText(R.string.provider_internet_settings).toString();
return SliceBuilderUtils.buildSearchResultPageIntent(mContext,
NetworkProviderSettings.class.getName(), "" /* key */, screenTitle,
SettingsEnums.SLICE)
SettingsEnums.SLICE, this)
.setClassName(mContext.getPackageName(), SubSettings.class.getName())
.setData(getUri());
}

View File

@@ -25,6 +25,7 @@ import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.datausage.DataSaverBackend;
@@ -117,6 +118,11 @@ public abstract class TetherBasePreferenceController extends TogglePreferenceCon
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override
public void onTetherStateUpdated(@TetherEnabler.TetheringState int state) {
mTetheringState = state;

View File

@@ -145,6 +145,11 @@ public class MobileDataSlice implements CustomSliceable {
return new Intent(mContext, MobileNetworkActivity.class);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_network;
}
@Override
public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
return MobileDataWorker.class;

View File

@@ -65,6 +65,12 @@ public abstract class TelephonyTogglePreferenceController extends TogglePreferen
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
/**
* Get carrier config based on specific subscription id.
*

View File

@@ -27,6 +27,7 @@ import android.widget.Switch;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.slices.SliceBackgroundWorker;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -58,7 +59,7 @@ public class NfcPreferenceController extends TogglePreferenceController
return;
}
mPreference = (MainSwitchPreference) screen.findPreference(getPreferenceKey());
mPreference = screen.findPreference(getPreferenceKey());
mPreference.addOnSwitchChangeListener(this);
mNfcEnabler = new NfcEnabler(mContext, mPreference);
}
@@ -103,6 +104,11 @@ public class NfcPreferenceController extends TogglePreferenceController
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override
public Class<? extends SliceBackgroundWorker> getBackgroundWorkerClass() {
return NfcSliceWorker.class;

View File

@@ -21,6 +21,7 @@ import android.nfc.NfcAdapter;
import androidx.preference.PreferenceScreen;
import androidx.preference.SwitchPreference;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -81,6 +82,11 @@ public class SecureNfcPreferenceController extends TogglePreferenceController
return true;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_connected_devices;
}
@Override
public void onResume() {
if (mSecureNfcEnabler != null) {

View File

@@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.PreferenceControllerMixin;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
@@ -87,6 +88,11 @@ public class BadgingNotificationPreferenceController extends TogglePreferenceCon
return TextUtils.equals(getPreferenceKey(), "notification_badging");
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
@Override
public boolean isChecked() {
return Settings.Secure.getInt(mContext.getContentResolver(),

View File

@@ -88,6 +88,12 @@ public class BubbleNotificationPreferenceController extends
return false;
}
@Override
public int getSliceHighlightMenuRes() {
// not needed since it's not sliceable
return 0;
}
@Override
public boolean isChecked() {
return Settings.Global.getInt(mContext.getContentResolver(),

View File

@@ -24,6 +24,7 @@ import android.provider.Settings;
import androidx.fragment.app.Fragment;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.google.common.annotations.VisibleForTesting;
@@ -73,6 +74,11 @@ public class NotificationAssistantPreferenceController extends TogglePreferenceC
}
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
protected void setNotificationAssistantGranted(ComponentName cn) {
if (Settings.Secure.getIntForUser(mContext.getContentResolver(),
Settings.Secure.NAS_SETTINGS_UPDATED, 0, mUserId) == 0) {

View File

@@ -20,6 +20,7 @@ import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_CACHED;
import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC;
import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED_BY_ANY_LAUNCHER;
import static android.os.UserHandle.USER_SYSTEM;
import android.app.INotificationManager;
import android.app.NotificationChannel;
@@ -44,6 +45,7 @@ import android.graphics.drawable.Drawable;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.notification.ConversationChannelWrapper;
import android.service.notification.NotificationListenerFilter;
import android.text.format.DateUtils;
@@ -112,6 +114,15 @@ public class NotificationBackend {
void recordCanBeBlocked(Context context, PackageManager pm, RoleManager rm, PackageInfo app,
AppRow row) {
if (Settings.Secure.getIntForUser(context.getContentResolver(),
Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 0, USER_SYSTEM) != 0) {
try {
row.systemApp = row.lockedImportance =
sINM.isPermissionFixed(app.packageName, row.userId);
} catch (RemoteException e) {
Log.w(TAG, "Error calling NMS", e);
}
} else {
row.systemApp = Utils.isSystemPackage(context.getResources(), pm, app);
List<String> roles = rm.getHeldRolesFromController(app.packageName);
if (roles.contains(RoleManager.ROLE_DIALER)
@@ -122,6 +133,7 @@ public class NotificationBackend {
com.android.internal.R.array.config_nonBlockableNotificationPackages);
markAppRowWithBlockables(nonBlockablePkgs, row, app.packageName);
}
}
@VisibleForTesting static void markAppRowWithBlockables(String[] nonBlockablePkgs, AppRow row,
String packageName) {
@@ -653,6 +665,11 @@ public class NotificationBackend {
return false;
}
@VisibleForTesting
void setNm(INotificationManager inm) {
sINM = inm;
}
/**
* NotificationsSentState contains how often an app sends notifications and how recently it sent
* one.

View File

@@ -28,6 +28,7 @@ import android.provider.Settings;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settingslib.core.lifecycle.LifecycleObserver;
import com.android.settingslib.core.lifecycle.events.OnPause;
@@ -86,6 +87,11 @@ public class PulseNotificationPreferenceController extends TogglePreferenceContr
isChecked ? ON : OFF);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
class SettingObserver extends ContentObserver {
private final Uri NOTIFICATION_LIGHT_PULSE_URI =

View File

@@ -32,6 +32,7 @@ import android.provider.Settings;
import androidx.preference.PreferenceScreen;
import com.android.internal.widget.LockPatternUtils;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.android.settings.overlay.FeatureFactory;
import com.android.settingslib.RestrictedLockUtils;
@@ -146,6 +147,11 @@ public class RedactNotificationPreferenceController extends TogglePreferenceCont
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
@Override
public void onStart() {
mContext.getContentResolver().registerContentObserver(

View File

@@ -18,6 +18,7 @@ package com.android.settings.notification;
import android.content.Context;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
import com.google.common.annotations.VisibleForTesting;
@@ -52,4 +53,9 @@ public class SilentStatusBarPreferenceController extends TogglePreferenceControl
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
}

View File

@@ -21,10 +21,11 @@ import static android.provider.Settings.Secure.SHOW_NOTIFICATION_SNOOZE;
import android.content.Context;
import android.provider.Settings;
import com.android.settings.core.TogglePreferenceController;
import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
public class SnoozeNotificationPreferenceController extends TogglePreferenceController {
private static final String TAG = "SnoozeNotifPrefContr";
@@ -53,4 +54,9 @@ public class SnoozeNotificationPreferenceController extends TogglePreferenceCont
return Settings.Secure.putInt(mContext.getContentResolver(),
SHOW_NOTIFICATION_SNOOZE, isChecked ? ON : OFF);
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
}

View File

@@ -20,6 +20,7 @@ import android.content.Context;
import android.media.AudioManager;
import android.media.Spatializer;
import com.android.settings.R;
import com.android.settings.core.TogglePreferenceController;
/**
@@ -53,4 +54,9 @@ public class SpatialAudioPreferenceController extends TogglePreferenceController
mSpatializer.setEnabled(isChecked);
return isChecked == isChecked();
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_notifications;
}
}

View File

@@ -23,6 +23,7 @@ import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.notification.VolumeSeekBarPreference.Callback;
import com.android.settingslib.core.lifecycle.Lifecycle;
@@ -75,6 +76,11 @@ public abstract class VolumeSeekBarPreferenceController extends
}
}
@Override
public int getSliceHighlightMenuRes() {
return R.string.menu_key_sound;
}
@Override
public int getSliderPosition() {
if (mPreference != null) {

View File

@@ -80,7 +80,7 @@ public class BlockPreferenceController extends NotificationPreferenceController
}
bar.setDisabledByAdmin(mAdmin);
if (mChannel != null && !isChannelBlockable()) {
if (mChannel != null && (!isChannelBlockable() || !isChannelConfigurable(mChannel))) {
bar.setSwitchBarEnabled(false);
}
@@ -88,8 +88,7 @@ public class BlockPreferenceController extends NotificationPreferenceController
bar.setSwitchBarEnabled(false);
}
if (mChannel == null && mAppRow.systemApp
&& (!mAppRow.banned || mAppRow.lockedImportance)) {
if (mChannel == null && !isAppBlockable()) {
bar.setSwitchBarEnabled(false);
}

View File

@@ -62,9 +62,9 @@ public class ConversationPriorityPreferenceController extends NotificationPrefer
public void updateState(Preference preference) {
if (mAppRow != null) {
preference.setEnabled(mAdmin == null && !mChannel.isImportanceLockedByOEM());
preference.setEnabled(mAdmin == null && isChannelConfigurable(mChannel));
ConversationPriorityPreference pref = (ConversationPriorityPreference) preference;
pref.setConfigurable(!mChannel.isImportanceLockedByOEM());
pref.setConfigurable(isChannelConfigurable(mChannel));
pref.setImportance(mChannel.getImportance());
pref.setOriginalImportance(mChannel.getOriginalImportance());
pref.setPriorityConversation(mChannel.isImportantConversation());

View File

@@ -68,7 +68,7 @@ public class HighImportancePreferenceController extends NotificationPreferenceCo
@Override
public void updateState(Preference preference) {
if (mAppRow != null && mChannel != null) {
preference.setEnabled(mAdmin == null && !mChannel.isImportanceLockedByOEM());
preference.setEnabled(mAdmin == null && isChannelConfigurable(mChannel));
RestrictedSwitchPreference pref = (RestrictedSwitchPreference) preference;
pref.setChecked(mChannel.getImportance() >= IMPORTANCE_HIGH);

View File

@@ -66,9 +66,9 @@ public class ImportancePreferenceController extends NotificationPreferenceContro
@Override
public void updateState(Preference preference) {
if (mAppRow!= null && mChannel != null) {
preference.setEnabled(mAdmin == null && !mChannel.isImportanceLockedByOEM());
preference.setEnabled(mAdmin == null && isChannelConfigurable(mChannel));
ImportancePreference pref = (ImportancePreference) preference;
pref.setConfigurable(!mChannel.isImportanceLockedByOEM());
pref.setConfigurable(isChannelConfigurable(mChannel));
pref.setImportance(mChannel.getImportance());
pref.setDisplayInStatusBar(mBackend.showSilentInStatusBar(mContext.getPackageName()));
pref.setDisplayOnLockscreen(Settings.Secure.getInt(mContext.getContentResolver(),

View File

@@ -68,7 +68,7 @@ public class MinImportancePreferenceController extends NotificationPreferenceCon
@Override
public void updateState(Preference preference) {
if (mAppRow != null && mChannel != null) {
preference.setEnabled(mAdmin == null && !mChannel.isImportanceLockedByOEM());
preference.setEnabled(mAdmin == null && isChannelConfigurable(mChannel));
RestrictedSwitchPreference pref = (RestrictedSwitchPreference) preference;
pref.setChecked(mChannel.getImportance() == IMPORTANCE_MIN);

View File

@@ -17,6 +17,7 @@
package com.android.settings.notification.app;
import static android.app.NotificationManager.IMPORTANCE_NONE;
import static android.os.UserHandle.USER_SYSTEM;
import android.annotation.Nullable;
import android.app.NotificationChannel;
@@ -27,6 +28,7 @@ import android.content.pm.PackageManager;
import android.content.pm.ShortcutInfo;
import android.graphics.drawable.Drawable;
import android.os.UserManager;
import android.provider.Settings;
import android.util.Log;
import androidx.preference.Preference;
@@ -62,6 +64,12 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
@Nullable
protected ShortcutInfo mConversationInfo;
protected List<String> mPreferenceFilter;
boolean mMigratedPermission;
boolean overrideCanBlock;
boolean overrideCanConfigure;
boolean overrideCanBlockValue;
boolean overrideCanConfigureValue;
public NotificationPreferenceController(Context context, NotificationBackend backend) {
super(context);
@@ -70,6 +78,8 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
mBackend = backend;
mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
mPm = mContext.getPackageManager();
mMigratedPermission = Settings.Secure.getIntForUser(context.getContentResolver(),
Settings.Secure.NOTIFICATION_PERMISSION_ENABLED, 0, USER_SYSTEM) != 0;
}
/**
@@ -138,10 +148,18 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
}
protected boolean isChannelBlockable(NotificationChannel channel) {
if (overrideCanBlock) {
return overrideCanBlockValue;
}
if (overrideCanConfigure) {
return overrideCanConfigureValue;
}
if (channel != null && mAppRow != null) {
if (channel.isImportanceLockedByCriticalDeviceFunction()
|| channel.isImportanceLockedByOEM()) {
return channel.getImportance() == IMPORTANCE_NONE;
boolean locked = mMigratedPermission ? mAppRow.lockedImportance
: channel.isImportanceLockedByCriticalDeviceFunction()
|| channel.isImportanceLockedByOEM();
if (locked) {
return channel.isBlockable() || channel.getImportance() == IMPORTANCE_NONE;
}
return channel.isBlockable() || !mAppRow.systemApp
@@ -150,9 +168,27 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
return false;
}
protected boolean isAppBlockable() {
if (overrideCanBlock) {
return overrideCanBlockValue;
}
if (overrideCanConfigure) {
return overrideCanConfigureValue;
}
if (mAppRow != null) {
return !mAppRow.systemApp && !mAppRow.lockedImportance;
}
return true;
}
protected boolean isChannelConfigurable(NotificationChannel channel) {
if (overrideCanConfigure) {
return overrideCanConfigureValue;
}
if (channel != null && mAppRow != null) {
return !channel.isImportanceLockedByOEM();
boolean locked = mMigratedPermission ? mAppRow.lockedImportance
: channel.isImportanceLockedByOEM();
return !locked || channel.isBlockable();
}
return false;
}
@@ -162,8 +198,14 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
}
protected boolean isChannelGroupBlockable(NotificationChannelGroup group) {
if (overrideCanBlock) {
return overrideCanBlockValue;
}
if (overrideCanConfigure) {
return overrideCanConfigureValue;
}
if (group != null && mAppRow != null) {
if (!mAppRow.systemApp) {
if (!mAppRow.systemApp && !mAppRow.lockedImportance) {
return true;
}
@@ -183,6 +225,16 @@ public abstract class NotificationPreferenceController extends AbstractPreferenc
return Objects.equals(NotificationChannel.DEFAULT_CHANNEL_ID, mChannel.getId());
}
protected final void setOverrideCanBlock(boolean canBlock) {
overrideCanBlock = true;
overrideCanBlockValue = canBlock;
}
protected final void setOverrideCanConfigure(boolean canConfigure) {
overrideCanConfigure = true;
overrideCanConfigureValue = canConfigure;
}
public static final Comparator<NotificationChannelGroup> CHANNEL_GROUP_COMPARATOR =
new Comparator<NotificationChannelGroup>() {
@Override

View File

@@ -120,7 +120,7 @@ public class ZenModeSliceBuilder {
final String screenTitle = context.getText(R.string.zen_mode_settings_title).toString();
return SliceBuilderUtils.buildSearchResultPageIntent(context,
ZenModeSettings.class.getName(), ZEN_MODE_SLICE_KEY, screenTitle,
SettingsEnums.NOTIFICATION_ZEN_MODE)
SettingsEnums.NOTIFICATION_ZEN_MODE, R.string.menu_key_notifications)
.setClassName(context.getPackageName(), SubSettings.class.getName())
.setData(contentUri);
}

View File

@@ -62,7 +62,8 @@ public class NfcPanel implements PanelContent {
AdvancedConnectedDeviceDashboardFragment.class.getName(),
null /* key */,
screenTitle,
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY);
SettingsEnums.SETTINGS_CONNECTED_DEVICE_CATEGORY,
R.string.menu_key_connected_devices);
intent.setClassName(mContext.getPackageName(), SubSettings.class.getName());
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
return intent;

Some files were not shown because too many files have changed in this diff Show More