ADB——修改手机默认参数
修改原理
修改设置的原理主要是通过 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 里存放的设置值。
利用ADB的命令可以修改手机的一些默认设置,修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。
修改命令
修改分辨率
adb shell wm size 480x1024 # 表示将分辨率修改为 480px * 1024px。 # 恢复原分辨率 adb shell wm size reset
修改屏幕密度
adb shell wm density 160 # 表示将屏幕密度修改为 160dpi。 # 恢复原屏幕密度 adb shell wm density reset
修改显示区域
adb shell wm overscan 0,0,0,200 # 四个数字分别表示距离左、上、右、下边缘的留白像素,以上命令表示将屏幕底部 200px 留白。 # 恢复原显示区域 adb shell wm overscan reset
关闭USB调试:
adb shell settings put global adb_enabled 0
注意:用命令无法恢复,毕竟关闭了 USB 调试 adb 就连接不上 Android 设备了。去设备上手动恢复:「设置」-「开发者选项」-「Android 调试」。
允许访问非 SDK API:
adb shell settings put global hidden_api_policy_pre_p_apps 1 adb shell settings put global hidden_api_policy_p_apps 1
禁止访问非 SDK API:
adb shell settings delete global hidden_api_policy_pre_p_apps adb shell settings delete global hidden_api_policy_p_apps
上述个功能不需要设备获得 Root 权限。
命令最后的数字的含义:
值 | 含义 |
---|---|
0 | 禁止检测非 SDK 接口的调用。该情况下,日志记录功能被禁用,并且令 strict mode API,即 detectNonSdkApiUsage() 无效。不推荐。 |
1 | 仅警告——允许访问所有非 SDK 接口,但保留日志中的警告信息,可继续使用 strick mode API。 |
2 | 禁止调用深灰名单和黑名单中的接口。 |
3 | 禁止调用黑名单中的接口,但允许调用深灰名单中的接口。 |
命令:
adb shell settings put global policy_control <key-values>
<key-value> 可由如下几种键及其对应的值组成,格式<key1>=<value1>:<key2>=<value2>
key | 含义 |
---|---|
immersive.full | 同时隐藏 |
immersive.status | 隐藏状态栏 |
immersive.navigation | 隐藏导航栏 |
immersive.preconfirms | ? |
这些键对应的值可则如下值用逗号组合:
value | 含义 |
---|---|
apps | 所有应用 |
* | 所有界面 |
packagename | 指定应用 |
-packagename | 排除指定应用 |
例如:
# 设置在所有界面下都同时隐藏状态栏和导航栏。 adb shell settings put global policy_control immersive.full=* # 设置在包名为 com.package1 和 com.package2 的应用里隐藏状态栏,在除了包名为 com.package3 的所有应用里隐藏导航栏。 adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3