You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android 30全局屏幕超时功能配置失效,求正确实现方法

Android 30 全局控制屏幕超时(自动变暗/常亮)的正确方法

核心问题分析

Android 10(API 29)及以上版本对系统设置的写入权限做了严格限制,普通应用无法直接修改SCREEN_OFF_TIMEOUT这类全局设置,必须具备设备所有者权限或以系统应用身份运行才能操作。另外,修改SettingsProvider默认值后需重新编译刷入系统才会生效,且仅作用于首次开机初始化,无法覆盖后续运行时的设置。

正确实现方案

1. 获取必要权限

  • 系统应用:在Manifest中声明权限
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    
    同时需使用系统签名编译应用。
  • 普通应用:必须通过MDM或adb命令激活为设备所有者,否则无法修改全局屏幕超时设置。

2. 代码实现(兼容Android 30)

Android 30下推荐使用Settings.Global而非Settings.System(部分设备的屏幕超时配置已迁移到Global分区):

// 启用10分钟自动锁屏(单位:毫秒)
val timeoutEnabled = 10 * 60 * 1000L
// 禁用自动锁屏(设置为系统允许的最大值,通常为2147483647)
val timeoutDisabled = 2147483647L

// 写入全局设置
Settings.Global.putLong(
    context.contentResolver,
    Settings.Global.SCREEN_OFF_TIMEOUT,
    targetTimeout
)

3. 验证与排查

  • 写入后可读取值确认修改是否成功:
    val currentTimeout = Settings.Global.getLong(
        context.contentResolver,
        Settings.Global.SCREEN_OFF_TIMEOUT,
        -1L
    )
    
  • 若修改后仍不生效,检查以下几点:
    • 是否有省电模式、第三方锁屏应用覆盖了屏幕超时设置
    • 设备是否处于充电状态(部分设备充电时会自动禁用屏幕超时)
    • 权限是否正确获取(系统应用需签名匹配,设备所有者需激活成功)

4. 关于SettingsProvider默认值修改

修改framework/base/packages/SettingsProvider/res/values/default.xml中的def_screen_off_timeout后,需重新编译系统镜像并刷入设备,且仅对首次初始化的系统生效。另外,屏幕变暗后仍有亮度属于设备休眠前的调光机制,是正常现象,只要超时设置生效,最终会进入完全锁屏状态。

内容的提问来源于stack exchange,提问作者Abhiroop Nandi Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 00:15:06