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);

上一篇:SQL中空值与NULL区别


下一篇:Android Programming: Pushing the Limits -- Chapter 7:Android IPC -- ApiWrapper