Grays out Screen Timeout Setting when disabled.
Previously we would hide the screen timeout setting when it is disabled by admin. Instead of hide it in Display Settings, now we gray it out and also provide the info of the enforced admin. Bug: 174834978 Test: manually Change-Id: Idaa3c4512eb648b67fcf6df2996c771a2f1b9617
This commit is contained in:
@@ -63,7 +63,7 @@
|
||||
</com.android.settingslib.RestrictedPreference>
|
||||
|
||||
<!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
|
||||
<Preference
|
||||
<com.android.settingslib.RestrictedPreference
|
||||
android:key="screen_timeout"
|
||||
android:title="@string/screen_timeout"
|
||||
android:summary="@string/summary_placeholder"
|
||||
|
@@ -26,10 +26,13 @@ import android.os.UserHandle;
|
||||
import android.os.UserManager;
|
||||
import android.provider.Settings;
|
||||
|
||||
import androidx.preference.Preference;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.RestrictedLockUtils;
|
||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||
import com.android.settingslib.RestrictedPreference;
|
||||
|
||||
/**
|
||||
* The controller of {@link ScreenTimeoutSettings}.
|
||||
@@ -43,14 +46,20 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return isDisableByAdmin() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
|
||||
return AVAILABLE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getSummary() {
|
||||
if (isDisableByAdmin()) {
|
||||
return mContext.getString(com.android.settings.R.string.disabled_by_policy_title);
|
||||
} else {
|
||||
public void updateState(Preference preference) {
|
||||
final RestrictedLockUtils.EnforcedAdmin admin = getEnforcedAdmin();
|
||||
if (admin != null) {
|
||||
preference.setEnabled(false);
|
||||
((RestrictedPreference) preference).setDisabledByAdmin(admin);
|
||||
}
|
||||
preference.setSummary(getTimeoutSummary());
|
||||
}
|
||||
|
||||
private CharSequence getTimeoutSummary() {
|
||||
final long currentTimeout = getCurrentScreenTimeout();
|
||||
final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
|
||||
R.array.screen_timeout_entries);
|
||||
@@ -60,18 +69,15 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController
|
||||
currentTimeout, timeoutEntries, timeoutValues);
|
||||
return mContext.getString(R.string.screen_timeout_summary, description);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isDisableByAdmin() {
|
||||
private RestrictedLockUtils.EnforcedAdmin getEnforcedAdmin() {
|
||||
final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
|
||||
if (dpm != null) {
|
||||
final RestrictedLockUtils.EnforcedAdmin admin =
|
||||
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
||||
return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
||||
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||
UserHandle.myUserId());
|
||||
return admin != null;
|
||||
}
|
||||
return false;
|
||||
return null;
|
||||
}
|
||||
|
||||
private long getCurrentScreenTimeout() {
|
||||
|
Reference in New Issue
Block a user