Android 系统属性的增加和操作

本文详细介绍了如何在Android系统源码中添加自定义的系统属性`persist.dev.sensor_power`,并通过编译刷机进行验证。此外,还展示了通过Java和C/C++代码读写该属性的方法,并提供了相应的代码示例。最后,提到了系统属性在Android源码中的广泛使用。

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

1、在参与编译生成 .prop文件的系统源码中添加定义 系统属性。
例如,default.prop文件参与编译:
/vendor/qcom/proprietary/qrdplus/Extension/config/default.prop

--- a/vendor/qcom/proprietary/qrdplus/Extension/config/default.prop
+++ b/vendor/qcom/proprietary/qrdplus/Extension/config/default.prop
@@ -23,6 +23,8 @@ persist.dbg.vt_avail_ovr=1
 persist.radio.videopause.mode=1
 persist.data.iwlan.enable=true
 persist.dbg.wfc_avail_ovr=1
+persist.dev.sensor_power=0

添加,系统属性:persist.dev.sensor_power

2、进行源码编译,刷机验证:

redkeyset@redkeyset-polytide:~/work/androidOs/android-msm8909$ adb shell
msm8909:/ $ getprop persist.dev.sensor_power                                                                                                                                                               
0
msm8909:/ $ setprop persist.dev.sensor_power 1                                                                                                                                                             
msm8909:/ $ getprop persist.dev.sensor_power                                                                                                                                                               
1

通过adb命令,验证新添加系统属性,可读可写。

3、通过Java代码操作:
在系統源碼中:

import android.os.SystemProperties;
SystemProperties.get(key, def_value);
SystemProperties.set(key, value);

在應用層:

public final class ReflectUtil {
    public static String getProperty(String key, String defaultValue) {
        String value = defaultValue;
        try {
            Class<?> c = Class.forName("android.os.SystemProperties");
            Method get = c.getMethod("get", String.class, String.class);
            value = (String)(get.invoke(c, key, defaultValue));
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            return value;
        }
    }

    public static void setProperty(String key, String value) {
        try {
            Class<?> c = Class.forName("android.os.SystemProperties");
            Method set = c.getMethod("set", String.class, String.class);
            set.invoke(c, key, value);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4、通过C或C++代码操作:

#include <cutils/properties.h>
property_get("persist.dev.sensor_power", 0);
property_set("persist.dev.sensor_power", 1);

在Android.mk里添加libcutils库
LOCAL_STATIC_LIBRARIES :=libcutils
或者LOCAL_SHARED_LIBRARIES :=libcutils

通過搜索系統源碼,可知系統中多處用到對系統屬性的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值