如果你做android的framework的开发,往往会涉及到不同应用之间的配合,需要读取或修改某个共享的数据。
这时你可以用到下面两个类来解决问题,这两个类的使用在framework也有经常出现。
SystemProperties,Settings.System
1.SystemProperties的使用。
在framework中,SystemProperties,常用来读取或修改系统属性,使用该方法可以给系统添加属性。
其中读取方法为Systemproperties.get(name),修改属性的方法为Systemproperties.set(name, value)。属性的名称是有一定规则的,名字的前缀要按照system\core\init\property_service.c中定义的格式来写,
下面是service中选取的规则:
{ "net.rmnet0.", AID_RADIO },
{ "net.gprs.", AID_RADIO },
{ "ril.", AID_RADIO },
{ "gsm.", AID_RADIO },
{ "net.dns", AID_RADIO },
{ "net.usb0", AID_RADIO },
{ "net.", AID_SYSTEM },
{ "dev.", AID_SYSTEM },
{ "runtime.", AID_SYSTEM },
{ "hw.", AID_SYSTEM },
{ "sys.", AID_SYSTEM },
{ "service.", AID_SYSTEM },
{ "wlan.", AID_SYSTEM },
{ "dhcp.", AID_SYSTEM },
{ "dhcp.", AID_DHCP },
{ "debug.", AID_SHELL },
{ "log.", AID_SHELL },
{ "service.adb.root", AID_SHELL },
{ "persist.sys.", AID_SYSTEM },
{ "persist.service.", AID_SYSTEM },
{ NULL, 0 }
android系统对调用该函数的方法有权限要求:
a.在AndroidManifest文件中要加入 android:sharedUserId="android.uid.system"
b.在Android.mk中,设置LOCAL_CERTIFICATE:=platform。
2.Settings.system的使用。
这个是Settings中经常使用的类,用来读取和修改Settings的属性,Settings属性的修改通常都会影响手机的全局功能。所以某种程度中,你可以用System.system来作为系统属性设置类。
读取方法为Settings.System.getInt(contentResolver, name, value);设置或修改属性方法为Settings.System.putInt(contentResolver, name, value);
这种方式保存的数据存放在Settings的数据库中,Settings中很多设置是通过这种方法保存的,例如飞行模式。
使用该方法需要在AndroidManifest注册权限
<uses-permission android:name=”android.permission.WRITE_SETTINGS” />