安卓能否编程设置屏幕锁定参数及对应源码位置查询
安卓屏幕锁定相关配置问题解答
问题1:是否支持通过编程方式修改两项配置的取值?
- 普通第三方应用无法直接修改这两项配置:安卓系统对安全类配置的修改权限做了严格限制,未获得特殊权限的普通应用只能通过
Intent跳转至系统安全设置页面,引导用户手动修改,跳转代码示例如下:Intent intent = new Intent(android.provider.Settings.ACTION_SECURITY_SETTINGS); startActivity(intent); - 满足以下任意一个条件的应用可以实现编程修改:
- 拥有设备管理员权限的应用,可通过
DevicePolicyManager类的相关接口修改:- 屏幕超时后锁定:调用
setTimeOut(ComponentName admin, long timeoutMs)设置超时后自动锁定的等待时间 - 电源按钮按下立即锁定:调用
setPowerButtonInstantlyLocks(ComponentName admin, boolean enabled)开关该功能
- 屏幕超时后锁定:调用
- 拥有系统签名、被加入特权应用白名单的系统级应用,可直接写入SettingsProvider的对应参数完成修改
- 拥有设备管理员权限的应用,可通过
问题2:两项配置对应的参数在安卓源码中的具体存储位置
配置参数存储位置
两个参数均属于系统安全配置,存储在SettingsProvider的Settings.Secure表中,持久化存储路径为对应ID的用户数据目录:
- 存储路径:
/data/system/users/[用户ID]/settings_secure.xml(多用户场景下每个用户的配置独立存储) - 屏幕超时后锁定对应参数名:
lock_screen_lock_after_timeout,值为超时后到锁定的等待毫秒数 - 电源按钮按下立即锁定对应参数名:
power_button_instantly_locks,值为1表示开启,0表示关闭
系统设置界面对应源码位置
你提到的设置页面源码位于AOSP的packages/apps/Settings模块下,具体逻辑参考:src/com/android/settings/security/ScreenLockSettings.java
相关配置界面参考
内容的提问来源于stack exchange,提问作者AndrewBloom
相关产品推荐
相关产品推荐


