android设置系统属性SystemProperties

引用的类: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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值