探索Android命名空间:不只是system、global和secure

10次阅读
没有评论

如何列出所有命名空间中的设置

当你使用adb shell settings list命令时,通常会看到系统、全局和安全三个命名空间(namespace)下的设置列表。例如:
– 对于系统命名空间:运行 platform-tools/adb shell settings list system
– 对于全局命名空间:运行 platform-tools/adb shell settings list global

但你可能会想知道如何列出所有可用的命名空间,因为有时候想要查看除了这三个之外的其他设置选项。

实际上,在 Android 中仅有三种标准的命名空间:
1. 系统(system)
2. 安全(secure)
3. 全局(global)

通过执行 settings 命令并不带任何参数时,可以查看这些信息:

adb shell settings usage:  settings [--user <USER_ID> | current] [--cm]
                                get namespace key
                                settings [--user <USER_ID> | current] [--cm]
                                put namespace key value
                                settings [--user <USER_ID> | current] [--cm]
                                delete namespace key
                                settings [--user <USER_ID> | current] [--cm]
                                list namespace
'namespace' is one of {system, secure, global}, case-insensitive

从上述的帮助信息中,可以看到仅 systemsecureglobal 这三个命名空间是有效的选项。这一结论也可以通过查看 Android 开源项目的相关代码得到验证。

例如,在 AOSP (Android Open Source Project)的源码中,settings 命令是在 Java 类 com.android.commands.settings.SettingsCmd 中实现的,并且该类内明确只有这三个命名空间被接受:

public class SettingsCmd extends Command {
    private static final String[] ALLOWED_NAMESPACES = new String[]{"system", "secure", "global"};
    // 这些是允许使用的命名空间列表
    .
    .
    .
}

综上所述,如果你想要在 adb shell 中查看更多的设置选项(如 Google Play 服务中的“Instant app”开关),你可能需要寻找其他方法或API来实现这一功能。这些高级设置通常不由用户通过 settings 命令直接访问和管理。

正文完