android设置系统属性SystemProperties

出處: http://blog.csdn.net/topgun_chenlingyun/article/details/7717484

引用的类:android.os.SystemProperties

有这么一些方法:

设置值:

void SystemProperties.set(String key, String value)

注意key最长31个字符,value最长91个字符

有一些特殊命名的属性会有不同的效果

如ro.开头的属性是只读的

persist.开头的属性,即使重启手机,仍然会存在

获取设置值:

String SystemProperties.get(String key)

String SystemProperties.get(String key, String def)

int SystemProperties.getInt(String key, int def)

long SystemProperties.getLong(String key, long def)

boolean SystemProperties.getBoolean(String key, boolean def)

其中getBoolean这个函数,只要value为

‘n’, ‘no’, ‘0’, ‘false’ 或者 ‘off’,那么返回false
而’y’, ‘yes’, ‘1’, ‘true’ 或者 ‘on’ ,则返回true。

SDK中不可用,系统中使用,需要系统UID,即在Manifest文件中设置

<manifest xmlns:android=”http://schemas.android.com/apk/res/android”
android:sharedUserId=”android.uid.system”> //这一行

另外特别要注意Android.mk文件中要设置平台授权:

LOCAL_CERTIFICATE := platform

如果仅manifest文件中设置了而mk文件没有设置的话,会出现很奇怪的现象就是你的apk消失了,访问不到了,就像不存在了一样。

####2012.7.18增加

系统属性的命名必须以下面这些字段开头,不同的字段需要不同的权限:

property_perms[] = {
{ “net.rmnet0.”,      AID_RADIO,    0 },
{ “net.gprs.”,        AID_RADIO,    0 },
{ “net.ppp”,          AID_RADIO,    0 },
{ “net.qmi”,          AID_RADIO,    0 },
{ “net.lte”,          AID_RADIO,    0 },
{ “net.cdma”,         AID_RADIO,    0 },
{ “ril.”,             AID_RADIO,    0 },
{ “mux.”,             AID_RADIO,    0 },
{ “gsm.”,             AID_RADIO,    0 },
{ “persist.radio”,    AID_RADIO,    0 },
{ “net.dns”,          AID_RADIO,    0 },
{ “sys.usb.config”,   AID_RADIO,    0 },
{ “net.”,             AID_SYSTEM,   0 },
{ “dev.”,             AID_SYSTEM,   0 },
{ “runtime.”,         AID_SYSTEM,   0 },
{ “hw.”,              AID_SYSTEM,   0 },
{ “sys.”,             AID_SYSTEM,   0 },
{ “service.”,         AID_SYSTEM,   0 },
{ “wlan.”,            AID_SYSTEM,   0 },
{ “dhcp.”,            AID_SYSTEM,   0 },
{ “dhcp.”,            AID_DHCP,     0 },
{ “debug.”,           AID_SHELL,    0 },
{ “log.”,             AID_SHELL,    0 },
{ “service.adb.root”, AID_SHELL,    0 },
{ “service.adb.tcp.port”, AID_SHELL,    0 },
{ “persist.sys.”,     AID_SYSTEM,   0 },
{ “persist.service.”, AID_SYSTEM,   0 },
{ “persist.security.”, AID_SYSTEM,   0 },
{ “mediatek.”,        AID_RADIO,    0 },
{ “gps.”,             AID_GPS,   AID_SYSTEM },
{ “cdma.”,            AID_RADIO,    0 },
{ “af.”,              AID_MEDIA,   0 },
{ “a2dp.”,            AID_MEDIA,   0 },
{ “streamin.”,        AID_MEDIA,   0 },
{ “streamout.”,       AID_MEDIA,   0 },
{ NULL, 0, 0 }
};

这些都在system/core/init/property_service.c中被定义

####2012.7.18增加完毕

另外要注意:

System.setProperty()和System.getProperty()

这两个方法并不是android提供的,而是java提供的,容易搞混,要注意。

这两个方法作用参考:http://blog.csdn.net/javadxz/article/details/6531925

未經允許不得轉載:GoMCU » android设置系统属性SystemProperties