修改设置之后,运行恢复命令有可能显示仍然不太正常,可以运行 adb reboot 重启设备,或手动重启。
修改设置的原理主要是通过 settings
命令修改 /data/data/com.android.providers.settings/databases/settings.db
里存放的设置值。
分辨率
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
允许访问非 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 | 禁止调用黑名单中的接口,但允许调用深灰名单中的接口。 |
状态栏和导航栏的显示隐藏
本节所说的相关设置对应 Cyanogenmod 里的「扩展桌面」。
命令:
adb shell settings put global policy_control <key-values>
<key-values>
可由如下几种键及其对应的值组成,格式为 <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=*
表示设置在所有界面下都同时隐藏状态栏和导航栏。
adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3
表示设置在包名为 com.package1
和 com.package2
的应用里隐藏状态栏
,在除了包名为 com.package3
的所有应用里隐藏导航栏。