Android系统SystemProperties属性的简介

adb  Android  2020年9月8日 pm12:04发布4年前 (2020)更新 城堡大人
128 0 0

前言

Android项目中,需要各个APP相互交互有时候需要共享数据和状态,因此经常会使用ContentProviderAIDLSystemProperties等等。

在上面几个中SystemProperties是最简单的一种方式。

但是这个只能在系统应用中调用,因为SystemProperties翻译为中文叫系统属性。

当如果你的是非系统应用,也可以用的,可以通过反射。

SystemProperties系统属性

SystemProperties中文直译[系统属性],是Android系统内属性全局共享方式之一。

通过get和set接口可以对系统的属性进行读取/设置。

它作为一个服务运行,管理系统配置和状态。所有这些配置和状态都是属性。每个属性是一个键值对(key/value pair),其类型都是字符串。

如下都是系统接口,不是系统应用无法使用.

    public static String get(@NonNull String key) {
        return native_get(key);
    }

    public static String get(@NonNull String key, @Nullable String def) {
        return native_get(key, def);
    }

    public static int getInt(@NonNull String key, int def) {
        return native_get_int(key, def);
    }

    public static long getLong(@NonNull String key, long def) {
        return native_get_long(key, def);
    }

    public static boolean getBoolean(@NonNull String key, boolean def) {
        return native_get_boolean(key, def);
    }

    public static void set(@NonNull String key, @Nullable String val) {
        native_set(key, val);
    }

这些属性可能是有些资源的使用状态,进程的执行状态,系统的特有属性。

使用adb改变SystemProperties的值

Android中除了通过get和set接口可以对系统的属性进行读取/设置,还可以通过adb中的getprop和setprop来获取和改变。

adb shell getprop

规则:

adb shell getprop <key> 查看手机上key属性状态值。

# 读取persist.sys.boot_first中保存的值
adb shell getprop persist.sys.boot_first
adb shell setprop

规则:

adb shell setprop key 设置某个属性key的状态值

# 读取persist.sys.boot_first中保存的值
adb shell setprop persist.sys.boot_first true

特别属性

ro. 属性

如果属性名称以ro.开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。

如果设置过,还想去设置,会抛异常的。

libc    : Unable to set property "ro.sys.boot_first" to "false": error code: 0xb
System.err: java.lang.RuntimeException: failed to set system property
System.err:    at android.os.SystemProperties.native_set(Native Method)
System.err:    at android.os.SystemProperties.set(SystemProperties.java:183)
persist. 属性

如果属性名称以persist.开头,当设置这个属性时,其值也将写入/data/property。

net.属性

如果属性名称以net.开头,当设置这个属性时,“net.change”属性将会自动设置,以加入到最后修改的属性名( netresolve模块的使用这个属性来追踪在net.*属性上的任何变化。)

ctrl. 属性

属性ctrl.start和ctrl.stop是用来启动和停止服务。

每一项服务必须在/init.rc中定义.系统启动时,与init守护进程将解析init.rc和启动属性服务。

一旦收到设置ctrl.start属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。

这项服务的启动结果将会放入init.svc.<服务名>属性中。

客户端应用程序可以轮询那个属性值,以确定结果。

参考文章

  1. Android系统属性简介
  2. Android 系统属性SystemProperty分析

 历史上的今天

  1. 2022: ACTION_MEDIA_BUTTON监听的几种方式记录(0条评论)
  2. 2021: Launcher的两次启动(0条评论)
  3. 2019: 米兰.昆德拉:二十四只鹧鸪(0条评论)
版权声明 1、 本站名称: 笔友城堡
2、 本站网址: https://www.biumall.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权,请留言

暂无评论

暂无评论...

随机推荐

Android中assets拷贝文件

前言Android需求:把指定文件拷贝到指定目录。最好的方式就是系统升级时内置进入指定目录,但客户说只是临时的,后续不要。因此内置到apk的assets,启动apk后就主动拷贝过去。正文只是拷贝文件,不涉及文件夹,文件夹需要遍历拷贝。下面是简单的拷贝代码,就是文件IO操作。asse...

android13添加SELinux权限时踩的坑

前言在配置Android 13 SELinux权限时出现如下坑,记录一下,方便自己查阅。正文坑一:ERROR: end of file in comment编译时提示service.te有如下错误prebuilts/build-tools/linux-x86/bin/m4:device/...

海子:麦子熟了

那一年兰州一带的新麦熟了 在回家的路上在水面混了三十多年的父亲还家了坐着羊皮筏子回家来了 有人背着粮食夜里推门进来 灯前认清是三叔老哥俩一宵无言半尺厚的黄土麦子熟了

[摘]WindowManager.LayoutParams的各种flag含义

FLAG_ALLOW_LOCK_WHILE_SCREEN_ON只要这个window对用户是可见的,则允许在屏幕开启的时候锁定屏幕这个flag可以单独的使用,也可以配合FLAG_KEEP_SCREEN_ON和(或者) FLAG_SHOW_WHEN_LOCKED使用FLAG_DIM_BEHIND...

ANR原因以及解决方法

 一. ANR (Application Not Responding)的定义?在Android上,应用程序如果没有响应,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择等待或者强制关闭。一个...

Android上bitmap和drawable之间互转简介

前言实际应用中,需要bitmap和drawable的转换,下面记录一下目前用过的或者知道的。好记性不如烂笔头正文下面简单记录一下bitmap和drawable之间互转的方式bitmap转drawableDrawable drawable = new BitmapDrawable(mAc...