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>
|
</com.android.settingslib.RestrictedPreference>
|
||||||
|
|
||||||
<!-- Cross-listed item, if you change this, also change it in power_usage_summary.xml -->
|
<!-- 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:key="screen_timeout"
|
||||||
android:title="@string/screen_timeout"
|
android:title="@string/screen_timeout"
|
||||||
android:summary="@string/summary_placeholder"
|
android:summary="@string/summary_placeholder"
|
||||||
|
@@ -26,10 +26,13 @@ import android.os.UserHandle;
|
|||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
|
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.BasePreferenceController;
|
||||||
import com.android.settingslib.RestrictedLockUtils;
|
import com.android.settingslib.RestrictedLockUtils;
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal;
|
import com.android.settingslib.RestrictedLockUtilsInternal;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The controller of {@link ScreenTimeoutSettings}.
|
* The controller of {@link ScreenTimeoutSettings}.
|
||||||
@@ -43,35 +46,38 @@ public class ScreenTimeoutPreferenceController extends BasePreferenceController
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return isDisableByAdmin() ? UNSUPPORTED_ON_DEVICE : AVAILABLE;
|
return AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CharSequence getSummary() {
|
public void updateState(Preference preference) {
|
||||||
if (isDisableByAdmin()) {
|
final RestrictedLockUtils.EnforcedAdmin admin = getEnforcedAdmin();
|
||||||
return mContext.getString(com.android.settings.R.string.disabled_by_policy_title);
|
if (admin != null) {
|
||||||
} else {
|
preference.setEnabled(false);
|
||||||
final long currentTimeout = getCurrentScreenTimeout();
|
((RestrictedPreference) preference).setDisabledByAdmin(admin);
|
||||||
final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
|
|
||||||
R.array.screen_timeout_entries);
|
|
||||||
final CharSequence[] timeoutValues = mContext.getResources().getStringArray(
|
|
||||||
R.array.screen_timeout_values);
|
|
||||||
final CharSequence description = TimeoutPreferenceController.getTimeoutDescription(
|
|
||||||
currentTimeout, timeoutEntries, timeoutValues);
|
|
||||||
return mContext.getString(R.string.screen_timeout_summary, description);
|
|
||||||
}
|
}
|
||||||
|
preference.setSummary(getTimeoutSummary());
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isDisableByAdmin() {
|
private CharSequence getTimeoutSummary() {
|
||||||
|
final long currentTimeout = getCurrentScreenTimeout();
|
||||||
|
final CharSequence[] timeoutEntries = mContext.getResources().getStringArray(
|
||||||
|
R.array.screen_timeout_entries);
|
||||||
|
final CharSequence[] timeoutValues = mContext.getResources().getStringArray(
|
||||||
|
R.array.screen_timeout_values);
|
||||||
|
final CharSequence description = TimeoutPreferenceController.getTimeoutDescription(
|
||||||
|
currentTimeout, timeoutEntries, timeoutValues);
|
||||||
|
return mContext.getString(R.string.screen_timeout_summary, description);
|
||||||
|
}
|
||||||
|
|
||||||
|
private RestrictedLockUtils.EnforcedAdmin getEnforcedAdmin() {
|
||||||
final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
|
final DevicePolicyManager dpm = mContext.getSystemService(DevicePolicyManager.class);
|
||||||
if (dpm != null) {
|
if (dpm != null) {
|
||||||
final RestrictedLockUtils.EnforcedAdmin admin =
|
return RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
||||||
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
||||||
mContext, UserManager.DISALLOW_CONFIG_SCREEN_TIMEOUT,
|
UserHandle.myUserId());
|
||||||
UserHandle.myUserId());
|
|
||||||
return admin != null;
|
|
||||||
}
|
}
|
||||||
return false;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private long getCurrentScreenTimeout() {
|
private long getCurrentScreenTimeout() {
|
||||||
|
Reference in New Issue
Block a user