Android系统中 setprop,getprop,watchprops命令的使用
如:在frameworks/opt/net/ims/src/java/com/android/ims/ImsManager.java
if (SystemProperties.get("persist.mtk_dynamic_ims_switch").equals("1")) {
我们想知道系统中persist.mtk_dynamic_ims_switch的值是多少,可以用如下方法
adb shell 进入android文件系统中:
shell@GF179:/ $ getprop persist.mtk_dynamic_ims_switch
0
在Android系统中,有一些初始化的配置文件,例如:
/init.rc
/default.prop
/system/build.prop
文件里面里面配置了开机设置的系统属性值,
这些属性值,可以通过getprop获取,setprop设置,
它的格式如下:
getprop [key]
获取指定key的配置值,如果不带参数,只是getprop则是显示系统所有的配置值。
[dalvik.vm.heapsize]: [24m]
[curlockscreen]: [1]
[ro.sf.hwrotation]: [0]
[ro.config.notification_sound]: [OnTheHunt.ogg]
[ro.config.alarm_alert]: [Alarm_Classic.ogg]
setprop [key] [value]
设置指定key的属性值,
watchprops
监听系统属性的变化,如果期间系统的属性发生变化则把变化的值显示出来
/system # watchprops
1307501833 sys.settings_system_version = '37'
1307501836 sys.settings_system_version = '38'
1307501862 persist.sys.timezone = 'Asia/Hong_Kong'
其实这三个命令都是toolbox的子命令,如果有兴趣的可以看在android源码中看到其对应的源码:
system/core/toolbox/
一般而言,我们在串口中输入getprop指令,会出现很多类似键值对的系统变量值,上图:
这些都是系统值,然而这些都是都是底层创建的变量,例如在某个驱动程序中创建,但如果在java语言中想获得这些信息中的某个变量的值,怎么办呢?
1,上一节我们讲解了,在java中如何调用linux的指令,主要通过如下代码实现:
Process process = Runtime.getRuntime().exec(com);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
BufferedReader input = new BufferedReader(ir);
2,我们想getprop和setprop既然都是命令,能不能也用上面的方面尝试得到值呢 ,当然。
getprop 用法:getprop [key]
setprop用法:setprop [key] [value]
注:实际中是没有中括号的。
所以用法同上:
Process process = Runtime.getRuntime().exec("getprop ro.runtime.firstboot");
InputStreamReader ir = new InputStreamReader(process.getInputStream());
BufferedReader input = new BufferedReader(ir);
一般而言,我们在串口中输入getprop指令,会出现很多类似键值对的系统变量值,上图:
这些都是系统值,然而这些都是都是底层创建的变量,例如在某个驱动程序中创建,但如果在java语言中想获得这些信息中的某个变量的值,怎么办呢?
1,上一节我们讲解了,在java中如何调用linux的指令,主要通过如下代码实现:
Process process = Runtime.getRuntime().exec(com);
InputStreamReader ir = new InputStreamReader(process.getInputStream());
BufferedReader input = new BufferedReader(ir);
2,我们想getprop和setprop既然都是命令,能不能也用上面的方面尝试得到值呢 ,当然。
getprop 用法:getprop [key]
setprop用法:setprop [key] [value]
注:实际中是没有中括号的。
所以用法同上:
Process process = Runtime.getRuntime().exec("getprop ro.runtime.firstboot");
InputStreamReader ir = new InputStreamReader(process.getInputStream());
BufferedReader input = new BufferedReader(ir);
作者:柒月
Q群 :2122210(嵌入式/机器学习)