美文网首页
Android的系统属性SystemProperties

Android的系统属性SystemProperties

作者: 艾满 | 来源:发表于2019-04-25 10:12 被阅读0次

原文来自于:Android的系统属性SystemProperties

SystemProperties属性操作的注意事项

1.属性前缀必须用system\core\init\property_service.c中定义的前缀
2.进行系统属性设置的程序也必须有system或root权限

SystemProperties属性的格式要求

  • 以“ro.”开头的属性名称,被视为只读属性。一旦设置,属性值不能改变。
  • 以“persist.”开头的属性名称,设置时,其值也将写入/data/property。
  • 以“net.”开头的属性名称,设置时,“net.change”属性将会自动设置,以加入到最后修改的属性名。

SystemProperties属性的操作方法

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

提升到system权限的方法:

1、在AndroidManifest.xml中,在manifest加入android:sharedUserId="android.uid.system"
2、在Android.mk中,將LOCAL_CERTIFICATE := XXX修改成LOCAL_CERTIFICATE :=platform

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

adb shell setprop persist.panel.orientation 90
adb shell getprop persist.panel.orientation

Android 的系统属性包括两部分:

1.文件保存的持久属性

//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"

2.每次开机导入的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);
}

相关文章

网友评论

      本文标题:Android的系统属性SystemProperties

      本文链接:https://www.haomeiwen.com/subject/iucagqtx.html