Android 中 SystemProperties 类使用方法

本文详细介绍了Android系统的build.prop文件生成过程及其在运行时如何通过SystemProperties类获取和设置系统属性。SystemProperties提供了获取字符串、整数和布尔值的方法,并通过在编译时的配置文件中设定值,来影响代码行为。文中给出了设置和使用系统属性的实例,如控制功能开关、设置音量默认值和查询特殊指令等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 系统可以通过读取 /system/build.prop 文件查看系统属性。

build.prop是如何生成的呢?Android的build.prop文件是在Android编译时刻收集的各种property,编译完成之后,文件生成在/out/target/product/huaqin75_cu_ics/system/目录下。在Android运行时刻可以通过SystemProperties_get*()读取这些属性值。build.prop的生成是由make系统解析build/core/Makefile完成。

SystemProperties类

Android系统主要通过SystemProperties这个类,直接本地调用来实现创建、获取及修改系统属性。

Systemproperties 类在 android.os 下,路径为:/frameworks/base/core/java/android/os/SystemProperties.java

方法详解:

(1)返回字符(String):

    android.os.SystemProperties.get(String key, String def);
    参数:key -- 键值 , def -- 默认值
    返回值:有相应的键值,返回键值对应的字符,否则返回默认值
    抛出异常:键值超过32位

(2)返回整型(int):

    android.os.SystemProperties.getInt(String key, int def);
    参数:key -- 键值 , def -- 默认值
    返回值:有相应的键值,返回键值对应的整型,否则返回默认值
    抛出异常:键值超过32位

(3)返回布尔型(boolean):

    android.os.SystemProperties.getBoolean(String key, boolean def);
    参数:key -- 键值 , def -- 默认值
    返回值:有相应的键值,返回键值对应的布尔型,否则返回默认值
    抛出异常:键值超过32位

 

设置系统属性方法:

1.定义: RO_CONFIG_REMOVE_FOCUSMODE
  在mediatek\build\tools\Configoption.pm中
  定义,RO_CONFIG_REMOVE_FOCUSMODE

2.赋值:RO_CONFIG_REMOVE_FOCUSMODE = true
  在mediatek\config\huaqin75_cu_ics\XXX\ProjectConfig.mk中
  赋值,RO_CONFIG_REMOVE_FOCUSMODE = true

3.使用:在代码XXX.java中使用

import android.os.SystemProperties; //导入方法依赖的package包/类

实例一(可以定义这样的系统属性值(布尔值)来取代宏FeatureOption,从而达到控制代码的目的。)

import android.os.SystemProperties;        //导包
……
final boolean RemoveFocusMode = SystemProperties.getBoolean("ro.config.remove.focusmode",false);  //获得属性值

if (RemoveFocusMode == true) {            //使用属性值
        // Remove the focus mode if we can use tap-to-focus.
        removePreference(group, focusMode.getKey());
}
else{
       ……
}

实例二(这样的用法在情景模式中用得非常多,对初始音量值的定义。)

赋值:
RO_CONFIG_GENERAL_VOLUME_RING = 7
RO_CONFIG_OUTDOOR_VOLUME_RING = 7(ProjectConfig.mk中)
使用: 
private static final int DEFAULT_RINGER_VOLUME_GENERAL = SystemProperties.getInt("ro.config.general.volume.ring", 4);
private static final int DEFAULT_RINGER_VOLUME_OUTDOOR = SystemProperties.getInt("ro.config.outdoor.volume.ring", 6);

也即在生成的build.prop中:
  ro.config.general.volume.ring=7
  ro.config.outdoor.volume.ring=7

实例三(还可以定义初始的字符串的值,例如查询命令:*#8375#。)

赋值:RO_CONFIG_VERSIONCODE = *_86556_(客户要求指令)
使用:
final String specialVersionCode = SystemProperties.get("ro.config.versioncode", "defaultVersionCode");
specialCode = specialVersionCode.replace("_", "#"); //(这当中以” _”代替” #”)

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值