Android settings命令讲解和实战

1,简介


        在Android系统中,settings命令用于管理设备设置。这些命令可以与`Settings`提供者(`Settings provider`)交互,后者是一个用于存储和检索系统设置的系统服务。Settings provider在Android系统中可以被看作是一个特殊的数据库,它用于存储和检索系统设置。这个数据库是为系统和应用程序提供的键值对存储服务,用于保存用户的偏好设置、系统配置和其他各种参数。Settings provider 的设计允许它高效地处理大量的设置项,并且能够确保设置的一致性和安全性。此外,它还支持监听设置项的变化,这样应用程序可以在设置发生变化时接收通知并做出相应的响应。

     Settings provider 维护了三个主要的命名空间,即 system、secure 和 global,每个命名空间都有其特定的用途和访问权限:

-system:存储系统级别的设置,通常包括设备状态、系统行为等,如屏幕超时时间、Wi-Fi设置等。这些设置通常是所有应用程序都可以读取的,但只有具有特定权限的应用程序才能修改它们。
-secure:存储敏感设置,如锁屏密码、PIN码等。这些设置对所有应用程序都是不可见的,只有系统应用程序和具有特定权限的应用程序才能访问和修改它们。
-global:存储全局设置,如数据漫游选项、自动时间等。这些设置对所有应用程序都是可见的,并且可以被具有特定权限的应用程序修改。

2,settings命令说明

Settings provider (settings) commands:
  help
	  Print this help text.
  get [--user <USER_ID> | current] NAMESPACE KEY
	  Retrieve the current value of KEY.
  put [--user <USER_ID> | current] NAMESPACE KEY VALUE [TAG] [default]
	  Change the contents of KEY to VALUE.
	  TAG to associate with the setting.
	  {default} to set as the default, case-insensitive only for global/secure namespace
  delete NAMESPACE KEY
	  Delete the entry for KEY.
  reset [--user <USER_ID> | current] NAMESPACE {PACKAGE_NAME | RESET_MODE}
	  Reset the global/secure table for a package with mode.
	  RESET_MODE is one of {untrusted_defaults, untrusted_clear, trusted_defaults}, case-insensitive
  list NAMESPACE
	  Print all defined keys.
	  NAMESPACE is one of {system, secure, global}, case-insensitive

相关参数说明:  

- `--user <USER_ID>`:这个参数用于指定操作应该针对特定的用户。在Android多用户环境中,不同的用户可以有不同的设置。如果不指定用户ID,可以使用`current`来代表当前正在操作的用户。

- `system`:这是设置命名空间之一,用于存储系统级别的设置,。这些设置对所有应用都是可见的,但只有具有特定权限的应用才能修改它们。

- `secure`:这个命名空间用于存储敏感设置,比如密码、PIN码等。这些设置对所有应用都是不可见的,只有系统应用和具有特定权限的应用才能访问和修改它们。

- `global`:这个命名空间用于存储全局设置,这些设置对所有应用都是可见的,并且可以被具有特定权限的应用修改。它们通常包括一些系统范围的设置,如日期和时间格式。

以下是一些具体的命令及其作用:

- `get`:检索特定键(KEY)的当前值。如果需要针对特定用户,可以使用`--user <USER_ID>`参数。

- `put`:更改特定键(KEY)的值为特定的值(VALUE)。可以为设置指定一个标签(TAG),或者将其设置为默认值(使用`default`参数)。

- `delete`:删除特定键(KEY)的条目。

- `reset`:重置特定命名空间(如`global`或`secure`)的设置。可以为特定应用重置设置,或者使用`RESET_MODE`参数来指定重置模式。

- `list`:列出特定命名空间(`system`、`secure`或`global`)中定义的所有键。

这些命令通常在Android开发和系统管理中使用,以编程方式修改或检索系统设置。

3,实战-修改应用崩溃弹框配置

场景: 在运行qq阅读时,启动异常了,第一次启动时,不会弹窗,而是直接退出,第二启动才会弹窗,其实这个可以修改系统配置来改变这种行为。

在Android系统中,`show_first_crash_dialog`是一个系统设置项,它通常用于控制当应用程序首次崩溃时是否显示崩溃对话框。这个设置项属于`global`命名空间,因为它影响的是整个系统的全局行为。如果你想要通过settings命令来管理这个设置项,你可以使用以下命令:

- 获取`show_first_crash_dialog`的当前值
  adb shell settings get global show_first_crash_dialog
  这将返回`show_first_crash_dialog`的当前值,可能是`0`(不显示)或`1`(显示)。

- 设置`show_first_crash_dialog`的值
  adb shell settings put global show_first_crash_dialog 1
  这将设置系统在应用首次崩溃时显示崩溃对话框。将`1`替换为`0`可以关闭这个对话框。

- 删除`show_first_crash_dialog`的设置(如果需要重置为默认值):
  adb shell settings delete global show_first_crash_dialog
  这将删除`show_first_crash_dialog`的当前值,使系统使用默认设置。

 所以只要执行settings put global show_first_crash_dialog 1, 应用如果启动异常,第一次启动异常就会报错。

4,其他常见配置

 settings get system screen_off_timeout 获取屏幕的休眠时间

 settings put system screen_off_timeout 999999999  设置屏幕的睡眠时间,也是用来设置系统的睡眠时间(下次断电上电后还是有效的)

 settings get secure default_input_method  获得系统默认输入法

 settings get system screen_brightness_mode          获取屏幕亮度模式

 settings get system screen_brightness      获取屏幕亮度

 settings put system screen_brightness 150 设置屏幕亮度为150

 settings get global auto_time             获取日期时间选项中通过网络获取时间的状态

 settings put global auto_time 0

 settings get global wifi_on   获取系统wifi是否打开

 settings put global wifi_on 0       关闭wifi

 settings get global airlpane_mode_on 获取系统是否处于飞行模式

 settings get secure android_id   获取android_id

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旗浩QH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值