转载自:https://www.cnblogs.com/wanqieddy/archive/2013/06/09/3128102.html

1 使用 SystemProperties.get
如果属性名称以“ro.”开头,那么这个属性被视为只读属性。一旦设置,属性值不能改变。
如果属性名称以“persist.”开头,当设置这个属性时,其值也将写入/data/property。

在c++中就是对应JAVA的两个函数就是property_set, property_get,其实JAVA是通过JNI调用这两个函数的。

JAVA代码如下:
import android.os.SystemProperties;

SystemProperties.set(“persist.sys.language”, zone.getID());
String lang= SystemProperties.get(“persist.sys.language”);

获取方法:

boolean fastfoodenable = SystemProperties.getBoolean(“persist.sys.fastfoodenable”, false);

设置方法:

SystemProperties.set(“persist.sys.fastfoodenable”, “true”);

C

#include

property_set(“persist.sys.language”, “zh”);
property_get(“persist.sys.language”, propLang, “en”);

在adb shell可以通过以下的命名读取和修改

#getprop persist.sys.language
#setprop persist.sys.language zh

创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是android属性的名称是有一定的格式要求的,如下: 前缀必须用system\core\init\property_service.c中定义的前缀 ,进行系统属性设置的程序也必须有system或root权限

如果我们要添加一个property:例如:silvan_liu

路径:system/core/rootdir/int.rc

在on post-fs-data 目录下

setprop persist.sys.silvan_liu 1//persist.sys 前缀名; 1为初始值

PS:不同前缀名权限不同,这里就不一一说明;还有为什么要加载on post-fs-data目录下,这和int.rc的语法有关

2 使用 Settings.System.putInt

这种方式会保存变量到Settings 数据库中,飞行模式等的开关就是用这种方式实现的。

首先需要定义一个系统属性值

路径:frameworks/base/core/java/android/provider/Settings.java

public static final String VIVIEN_FASTFOOD= “hungry”;

1)获取方法如下:

@Override

public void onResume(){  super.onResume();  if(Settings.System.getInt(getContentResolver(), Settings.System.VIVIEN_FASTFOOD,0)==1)   {  mYesORNo.setChecked(true);   }  else  mYesORNo.setChecked(false);}

2)设置

if (mYesORNo.isChecked()) {

          Settings.System.putInt(getContentResolver(),                 Settings.System.VIVIEN_FASTFOOD, 1);       } else {          Settings.System.putInt(getContentResolver(),                 Settings.System.VIVIEN_FASTFOOD, 0);       }

需要import android.provider.Settings;


from:http://blog.csdn.net/k1102k27/article/details/7106124

android源码开发中,常常要用到一些全局标志或者说变量,这时候我们可以给android系统添加自己想要的属性。

1.Settings.system

这种系统属性我们经常用到,例如飞行模式的开启和关闭,我们就是去改变Settings.system.AIRPLANE_MODE_ON 的值。

下面就介绍下我们怎样去定义一个系统属性。例如要添加一个属性名为“SILVAN_LIU”

路径:frameworks/base/core/java/android/provider/Settings.java

[java] view plaincopy

public static final String SILVAN_LIU = “silvan_liu”;
public static final String[] SETTINGS_TO_BACKUP ={
~
+SILVAN_LIU
~
}
这样添加后,你就是可以通过Settings.System.getInt(getContentResolver(), Settings.System.SILVAN_LIU,0) 和Settings.System.getInt(getContentResolver(), Settings.System.SILVAN_LIU,0)去得到和设定SILVAN_LIU的属性值。

2.SystemProperties

创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是android属性的名称是有一定的格式要求的,如下: 前缀必须用system\core\init\property_service.c中定义的前缀 ,进行系统属性设置的程序也必须有system或root权限

如果我们要添加一个property:例如:silvan_liu

路径:system/core/rootdir/int.rc

在on post-fs-data 目录下

setprop persist.sys.silvan_liu 1//persist.sys 前缀名; 1为初始值

PS:不同前缀名权限不同,这里就不一一说明;还有为什么要加载on post-fs-data目录下,这和int.rc的语法有关。

更多相关文章

  1. Android的Toolbar(含溢出菜单设置[弹出菜单的使用])的使用PopMen
  2. Notification的功能与用法
  3. android2.1之后appwidget的一些问题
  4. xml文件内引用资源
  5. Android之TextView动态设置图片
  6. Android切换语言不重启应用的解决方案
  7. android 开发实现悬浮窗体
  8. EditText的几个小点
  9. Android(安卓)EditText 密码输入框可见性设置。

随机推荐

  1. android绘制view的过程(自定义view一)
  2. java android 中的Toast
  3. android bitmap溢出问题完美解决方案
  4. android的popuwindow的使用
  5. Android中的服务(service)详解(一)
  6. LK based Android bootloader
  7. android 动态 布局
  8. Android 更新升级版本
  9. CCS5,1
  10. 初学Android,使用Drawable资源之使用Stat