diff options
author | Matt Pietal <mpietal@google.com> | 2021-05-06 08:35:13 -0400 |
---|---|---|
committer | Matt Pietal <mpietal@google.com> | 2021-05-06 08:35:13 -0400 |
commit | 8850c3c677fe912640f3673739b6acbdd993c1d5 (patch) | |
tree | ed073ffee3ccca75cfd5122c88d0a621991ec112 /src/com/android/settings/display/ControlsPrivacyPreferenceController.java | |
parent | d6913243a10d6c4156686edb1e6cdbcd1200dee9 (diff) |
Wallet/controls - Migrate existing settings
Step 2 of 2. Move wallet settings from System -> Gestures -> Power
Menu to Display -> Lockscreen. Split the existing sensitivity setting
into two separate toggles to give users better control of their
privacy settings.
Bug: 185597511
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.display
Change-Id: Ifc390945a45258bbcc3c0a6ac67a0c4a3f7a9e91
Diffstat (limited to 'src/com/android/settings/display/ControlsPrivacyPreferenceController.java')
-rw-r--r-- | src/com/android/settings/display/ControlsPrivacyPreferenceController.java | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/com/android/settings/display/ControlsPrivacyPreferenceController.java b/src/com/android/settings/display/ControlsPrivacyPreferenceController.java new file mode 100644 index 0000000000..6e97c9e500 --- /dev/null +++ b/src/com/android/settings/display/ControlsPrivacyPreferenceController.java @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2021 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.android.settings.display; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.os.UserHandle; +import android.provider.Settings; + +import androidx.preference.Preference; + +import com.android.internal.widget.LockPatternUtils; +import com.android.settings.R; +import com.android.settings.core.TogglePreferenceController; +import com.android.settings.overlay.FeatureFactory; + +/** + * Preference for showing/hiding sensitive device controls content while the device is locked. + */ +public class ControlsPrivacyPreferenceController extends TogglePreferenceController { + + private static final String SETTING_KEY = "lockscreen_show_controls"; + + public ControlsPrivacyPreferenceController(Context context, String preferenceKey) { + super(context, preferenceKey); + } + + @Override + public boolean isChecked() { + return Settings.Secure.getInt(mContext.getContentResolver(), SETTING_KEY, 0) != 0; + } + + @Override + public boolean setChecked(boolean isChecked) { + return Settings.Secure.putInt(mContext.getContentResolver(), SETTING_KEY, + isChecked ? 1 : 0); + } + + @Override + public CharSequence getSummary() { + boolean controlsAvailable = isControlsAvailable(); + final int res; + if (!isSecure()) { + res = R.string.lockscreen_privacy_not_secure; + } else { + res = R.string.lockscreen_privacy_controls_summary; + } + return mContext.getText(res); + } + + @Override + public int getAvailabilityStatus() { + // hide if lockscreen isn't secure for this user + return isEnabled() && isSecure() ? AVAILABLE : DISABLED_DEPENDENT_SETTING; + } + + @Override + public void updateState(Preference preference) { + super.updateState(preference); + preference.setEnabled(getAvailabilityStatus() != DISABLED_DEPENDENT_SETTING); + refreshSummary(preference); + } + + private boolean isEnabled() { + return isControlsAvailable(); + } + + private boolean isSecure() { + final LockPatternUtils utils = FeatureFactory.getFactory(mContext) + .getSecurityFeatureProvider() + .getLockPatternUtils(mContext); + int userId = UserHandle.myUserId(); + return utils.isSecure(userId); + } + + private boolean isControlsAvailable() { + return mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CONTROLS); + } +} |