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


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: android.os.systemproperties是一个Android平台的类,用于获取和设置系统属性系统属性是一些键值对,用于存储系统的一些配置信息,例如设备的型号、版本号、屏幕分辨率等。通过android.os.systemproperties可以获取这些系统属性的值,也可以设置这些属性的值。这个类提供了一些静态方法,例如get()、getInt()、getLong()、set()等,可以方便地操作系统属性。 ### 回答2: android.os.systempropertiesAndroid系统中的一个类,主要用于获取Android设备上的系统属性。在Android系统中,每个设备都有一些系统属性,这些属性包括设备的基本信息、硬件特性、运行状态等,我们可以通过android.os.systemproperties类来获取这些属性,进一步了解设备和操作系统的运行情况。该类提供了一个getProperty(String key)方法,用于获取指定属性的值,其中key是属性名,返回值是属性值。例如,我们可以使用以下代码获取设备的型号和系统版本: String model = android.os.systemproperties.getProperty("ro.product.model"); //获取设备型号 String version = android.os.systemproperties.getProperty("ro.build.version.release"); //获取系统版本号 除了在应用程序开发中使用,android.os.systemproperties类还被广泛用于ROM(固件)开发和修改。在电子设备市场众多且竞争激烈的今天,ROM的开发和修改已经成为了一个重要的市场,用户可以根据自己的需求选择或者定制自己所需的ROM。Android系统属性可以方便ROM开发者获取设备信息、修改系统行为等,帮助他们开发出更加符合用户需求的ROM。例如,当我们需要修改设备的屏幕密度时,可以使用以下代码: android.os.systemproperties.set("ro.sf.lcd_density", "240"); 此外,通过systemproperties类还可以获取实时的cpu、内存占用情况,对于系统性能优化也具有一定的帮助作用。总之,android.os.systemproperties类在Android系统开发和ROM定制中具有重要作用。 ### 回答3: android.os.systempropertiesAndroid操作系统中用于取得系统属性的API。系统属性包括一些关键的系统信息,例如版本号、厂商、型号、CPU架构等等。这些系统属性对于一些应用程序的运行或者开发有很大的作用,例如应用程序需要在特定型号、特定版本的Android设备上运行,或者需要针对特定的CPU架构做出特定的处理。 通过android.os.systemproperties,应用程序可以非常方便地读取这些系统属性。例如下面的代码可以读取Android设备的版本号: ```java String version = SystemProperties.get("ro.build.version.release"); ``` 这里“ro.build.version.release”就是一个系统属性,它存储了设备的版本号。通过SystemProperties.get()方法就可以取得这个系统属性的值,也就是Android设备的版本号。 当然,有时候我们还需要设置系统属性,这时候我们可以使用SystemProperties.set()方法。例如下面的代码将当前设备的屏幕分辨率设置为1024 * 768: ```java SystemProperties.set("persist.sys.resolution", "1024x768"); ``` 在使用这个方法时,需要注意一些问题:首先,只有系统管理员才有权限设置系统属性,因此需要root权限;其次,设置系统属性需要谨慎,不当的设置可能会造成设备出现不可预期的问题。 因此,总的来说,android.os.systemproperties是一个非常有用的API,能够方便地读取系统属性,但在使用时需要谨慎。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值