Android使用SystemProperties基础了解

安卓系统属性是以键值对的形式存在,一般放在system.prop,build.prop,default.prop等文件中。这些属性可能是进程状态,资源使用情况,系统特有属性等等。。。

创建与修改android属性用Systemproperties.set(name, value)

获取android属性用Systemproperties.get(name)

注意:android属性的名称是有一定的格式要求的,如下:前缀必须用system\core\init\property_service.c中定义的前缀,进行系统属性设置的程序也必须有system或root权限

提升到system权限的方法:

1、在AndroidManifest.xml中,在manifest加入android:sharedUserId="android.uid.system"

2、在Android.mk中,將LOCAL_CERTIFICATE := XXX修改成LOCAL_CERTIFICATE :=platform

Android 的系统属性包括两部分:文件保存的持久属性和每次开机导入的cache属性持久属性主要保存在下面几个文件中:

bionic/libc/include/sys/_system_properties.h

#define PROP_SERVICE_NAME "property_service"
#define PROP_PATH_RAMDISK_DEFAULT  "/default.prop"
#define PROP_PATH_SYSTEM_BUILD     "/system/build.prop"
#define PROP_PATH_SYSTEM_DEFAULT   "/system/default.prop"
#define PROP_PATH_LOCAL_OVERRIDE   "/data/local.prop"

cache属性则通过frameworks/base/core/java/android/os/SystemProperties.java的接口定义:

private static native String native_get(String key);
private static native String native_get(String key, String def);
private static native void native_set(String key, String def);
public static void set(String key, String val) {
   if (key.length() > PROP_NAME_MAX) {
       throw new IllegalArgumentException("key.length > " + PROP_NAME_MAX);
    }
    if (val != null && val.length() > PROP_VALUE_MAX) {
        throw new IllegalArgumentException("val.length > " +
            PROP_VALUE_MAX);
    }
    native_set(key, val);
}

ADB设置系统属性和获取系统属性的命令如下(adb需要有root权限才能设置成功):

adb shell setprop persist.panel.orientation 90

adb shell getprop persist.panel.orientation

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

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

如果属性名称以“net.”开头,当设置这个属性时,“net.change”属性将会自动设置,以加入最后修改的属性名。

属性“ ctrl.start ”和“ ctrl.stop ”是用来启动和停止服务。每一项服务必须在/init.rc中定义。系统启动时,init守护进程将解析init.rc和启动属性服务。一旦收到设置“ ctrl.start ”属性的请求,属性服务将使用该属性值作为服务名找到该服务,启动该服务。这项服务的启动结果将会放入“ init.svc.<服务名>“属性中。客户端应用程序可以轮询那个属性值,以确定结果 。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值