修改設置的原理主要是經過 settings 命令修改 /data/data/com.android.providers.settings/databases/settings.db 裏存放的設置值。android
利用ADB的命令能夠修改手機的一些默認設置,修改設置以後,運行恢復命令有可能顯示仍然不太正常,能夠運行 adb reboot 重啓設備,或手動重啓。git
修改分辨率github
adb shell wm size 480x1024 # 表示將分辨率修改成 480px * 1024px。 # 恢復原分辨率 adb shell wm size reset
修改屏幕密度shell
adb shell wm density 160 # 表示將屏幕密度修改成 160dpi。 # 恢復原屏幕密度 adb shell wm density reset
修改顯示區域api
adb shell wm overscan 0,0,0,200 # 四個數字分別表示距離左、上、右、下邊緣的留白像素,以上命令表示將屏幕底部 200px 留白。 # 恢復原顯示區域 adb shell wm overscan reset
關閉USB調試:app
adb shell settings put global adb_enabled 0
注意:用命令沒法恢復,畢竟關閉了 USB 調試 adb 就鏈接不上 Android 設備了。去設備上手動恢復:「設置」-「開發者選項」-「Android 調試」。ide
容許訪問非 SDK API:spa
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