Files
app_Settings/src/com/android/settings/privatespace/autolock/AutoLockSettingsFragment.java
josephpv 5fd6d6435b Add footer in private space auto lock settings page
Add a footer note to private space auto lock settings page that apps in
private space may need to be authenticated unlock when a separate lock
is set for private space.

Screenshot:
go/ss/7fE8epun3A2hgq4.png

Bug: 343166689
Test: Manual
Change-Id: I18c650eba128da512116a3166babb49f7ef33bb3
2024-05-29 19:07:20 +00:00

162 lines
5.4 KiB
Java

/*
* Copyright (C) 2023 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.privatespace.autolock;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settings.privatespace.PrivateSpaceMaintainer;
import com.android.settings.widget.RadioButtonPickerFragment;
import com.android.settingslib.widget.CandidateInfo;
import com.android.settingslib.widget.FooterPreference;
import com.android.settingslib.widget.TopIntroPreference;
import java.util.ArrayList;
import java.util.List;
public class AutoLockSettingsFragment extends RadioButtonPickerFragment {
private static final String TAG = "PSAutoLockSetting";
private static final String AUTOLOCK_METRIC_KEY = "private_space_autolock_mode";
private PrivateSpaceMaintainer mPrivateSpaceMaintainer;
private CharSequence[] mAutoLockRadioOptions;
private CharSequence[] mAutoLockRadioValues;
@Override
public void onCreate(@NonNull Bundle icicle) {
if (android.os.Flags.allowPrivateProfile()
&& android.multiuser.Flags.supportAutolockForPrivateSpace()
&& android.multiuser.Flags.enablePrivateSpaceFeatures()) {
super.onCreate(icicle);
}
}
@Override
public void onStart() {
super.onStart();
if (mPrivateSpaceMaintainer.isPrivateSpaceLocked()) {
finish();
}
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
mPrivateSpaceMaintainer = PrivateSpaceMaintainer.getInstance(context);
mAutoLockRadioOptions =
context.getResources().getStringArray(R.array.private_space_auto_lock_options);
mAutoLockRadioValues =
context.getResources()
.getStringArray(R.array.private_space_auto_lock_options_values);
}
@Override
protected void addStaticPreferences(PreferenceScreen screen) {
final TopIntroPreference introPreference = new TopIntroPreference(screen.getContext());
introPreference.setTitle(R.string.private_space_auto_lock_page_summary);
final FooterPreference footerPreference = new FooterPreference(screen.getContext());
footerPreference.setSummary(R.string.private_space_auto_lock_footer_message);
screen.addPreference(introPreference);
screen.addPreference(footerPreference);
}
@Override
public int getMetricsCategory() {
return SettingsEnums.PRIVATE_SPACE_SETTINGS;
}
@Override
protected int getPreferenceScreenResId() {
return R.xml.private_space_auto_lock_settings;
}
@Override
protected List<? extends CandidateInfo> getCandidates() {
final List<CandidateInfo> candidates = new ArrayList<>();
if (mAutoLockRadioValues != null) {
for (int i = 0; i < mAutoLockRadioValues.length; ++i) {
candidates.add(
new AutoLockCandidateInfo(
mAutoLockRadioOptions[i], mAutoLockRadioValues[i].toString()));
}
} else {
Log.e(TAG, "Autolock options do not exist.");
}
return candidates;
}
@Override
protected String getDefaultKey() {
return Integer.toString(mPrivateSpaceMaintainer.getPrivateSpaceAutoLockSetting());
}
@Override
protected boolean setDefaultKey(String key) {
try {
@Settings.Secure.PrivateSpaceAutoLockOption final int value = Integer.parseInt(key);
mPrivateSpaceMaintainer.setPrivateSpaceAutoLockSetting(value);
mMetricsFeatureProvider.action(
mMetricsFeatureProvider.getAttribution(getActivity()),
SettingsEnums.ACTION_SET_PRIVATE_SPACE_AUTOLOCK,
getMetricsCategory(),
AUTOLOCK_METRIC_KEY,
value /* value */);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);
}
return true;
}
private static class AutoLockCandidateInfo extends CandidateInfo {
private final CharSequence mLabel;
private final String mKey;
AutoLockCandidateInfo(CharSequence label, String key) {
super(true);
mLabel = label;
mKey = key;
}
@NonNull
@Override
public CharSequence loadLabel() {
return mLabel;
}
@Nullable
@Override
public Drawable loadIcon() {
return null;
}
@NonNull
@Override
public String getKey() {
return mKey;
}
}
}