android SystemProperties--如何配置系统属性

来源:互联网 发布:表格分析数据怎么取消 编辑:程序博客网 时间:2024/06/07 12:38
实现一个上层设置中的开关控制关机时是否在充电时打开呼吸灯的需求:
明确如何实现:
上层写入一个系统属性的变量,在开关打开和关闭时改变变量的值(bool类型即可),底层会去读取这个系统属性的值,从而做控制;
  1.上层需要做的是如何进行设值:
import android.os.SystemProperties;
SystemProperties.set(String key, String value);
SystemProperties.set("persist.sys.charging.led", "true");//设值,value总是String
SystemProperties.get("persist.sys.charging.led");//获取,有许多获取方法
frameworks/base/core/java/android/os下的SystemProperties.java类
注意:key必须以persist.sys.开头,才能成功写入,测试以自定义的开头,或者以persist.开头都无法成功设值(原因不明,可能是权限问题)。

  2.查看设值是否成功的方法:
adb shell进去输入如下命令:
getprop 用法:getprop [key]获取系统属性,没有key则获取全部
setprop用法:setprop [key] [value]一一对应,都需要
watchprops用法: 监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来

注:实际中是没有中括号的。

{00030725 如何增加或修改Android Property的值}


补:

2017.2.15:

最近又使用到一次SystemProperties,key值的命名以“sys.”开头也是可以使用的。所以之前上面的表述耗时存在问题的。

关于第三方应用无法使用SystemProperties这个接口的问题:

都需要将Android SDK 目录下data下的layoutlib.jar文件加到当前工程的附加库路径中,eclipse和androidstudio稍有区别:

eclipes直接将layoutlib.jar包拷贝到工程目录下的libs就可以使用了,但是androidstudio由于是通过gradle来配置编译lib库的,所以需要在build.gradle文件定义个变量,获取SDK_DIR路径。

    String SDK_DIR = System.getenv("ANDROID_SDK_HOME")if(SDK_DIR == null) {    Properties props = new Properties()    props.load(new FileInputStream(project.rootProject.file("local.properties")))    SDK_DIR = props.get('sdk.dir');}      dependencies {       provided files("${SDK_DIR}/platforms/android-24/data/layoutlib.jar")  }
参考:http://www.jianshu.com/p/74fdac3a0e35

0 0
原创粉丝点击