Добавьте разрешения.
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
статическая постоянная.
private static final String SCREEN_OFF_TIMEOUT = "screen_off_timeout";
Вызов метода настройки системы
/**
* 默认无操作后15s屏幕进入休眠
*
* @param isChecked 常亮开关
*/
private void setScreenSaverEnable(boolean isChecked) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS,
Uri.parse("package:" + BaseApp.getInstance().getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivityForResult(intent, 1000);
} else {
PrfUtils.setScreenState(isChecked);
if (isChecked) {
Settings.System.putInt(this.getContentResolver(), SCREEN_OFF_TIMEOUT, Integer.MAX_VALUE);//永不休眠
} else {
Settings.System.putInt(this.getContentResolver(), SCREEN_OFF_TIMEOUT, 1000 * 15);
}
}
}
}
Уведомление:
Settings.System.putInt(this.getContentResolver(), SCREEN_OFF_TIMEOUT, 1000 * 15);
Значение значения будет установлено только в соответствии с системой. Например, система устанавливает минимальное время блокировки экрана на 15 с, но код установлен на 10 с, а экран блокировки по-прежнему составляет 15 с.