SystemProperties跟Settings.System

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

JAVA代码如下:

import android.os.SystemProperties;

//设定

SystemProperties.set("persist.sys.language", "默认值");

//读取
String lang= SystemProperties.get("persist.sys.language");//string int lang = SystemProperties.getInt("persist.sys.language",10); boolean fastfoodenable = SystemProperties.getBoolean("persist.sys.fastfoodenable", false);//boolean

创建与修改android属性用

Systemproperties.set(name, value);

获取android属性用

Systemproperties.get(name);

需要注意的是android属性的名称是有一定的格式要求的,

前缀必须用system\core\init\property_service.c中定义的前缀

property_service.c的内容如下

property_perms[] = {
{ "net.rmnet0.", AID_RADIO, },
{ "net.gprs.", AID_RADIO, },
{ "net.ppp", AID_RADIO, },
{ "net.qmi", AID_RADIO, },
{ "net.lte", AID_RADIO, },
{ "net.cdma", AID_RADIO, },
{ "ril.", AID_RADIO, },
{ "persist.ril.", AID_RADIO, },
{ "persist.ril.cfu.querytype", AID_APP, },
{ "mux.", AID_RADIO, },
{ "mux.", AID_SYSTEM, },
{ "mtk_telephony_mode_slot1", AID_SYSTEM, },
{ "mtk_telephony_mode_slot2", AID_SYSTEM, },
{ "gsm.", AID_RADIO, },
{ "persist.radio", AID_RADIO, },
{ "net.dns", AID_RADIO, },
{ "sys.usb.config", AID_RADIO, AID_SYSTEM },
{ "net.", AID_SYSTEM, },
{ "net.", AID_DHCP, },
{ "dev.", AID_SYSTEM, },
{ "runtime.", AID_SYSTEM, },
{ "hw.", AID_SYSTEM, },
{ "sys.", AID_SYSTEM, },
{ "sys.powerctl", AID_SHELL, },
{ "service.", AID_SYSTEM, },
{ "wlan.", AID_SYSTEM, },
{ "bluetooth.", AID_BLUETOOTH, },
{ "dhcp.", AID_SYSTEM, },
{ "bwc.mm.", AID_SYSTEM, },
{ "dhcp.", AID_DHCP, },
{ "debug.", AID_SYSTEM, },
{ "debug.", AID_SHELL, },
{ "log.", AID_SHELL, },
{ "service.adb.root", AID_SHELL, },
{ "service.adb.tcp.port", AID_SHELL, },
{ "persist.sys.", AID_SYSTEM, },
{ "persist.service.", AID_SYSTEM, },
{ "persist.security.", AID_SYSTEM, },
{ "persist.service.bdroid.", AID_BLUETOOTH, },
{ "selinux." , AID_SYSTEM, },
{ "gps.", AID_GPS, AID_SYSTEM },
{ "persist.af.", AID_MEDIA, },

进行系统属性设置的程序也必须有 system或root权限

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

路径:

system/core/rootdir/init.rc

它的内容如下

on post-fs-data
# We chown/chmod /data again so because mount is run as root + defaults
chown system system /data
chmod 0771 /data
# We restorecon /data in case the userdata partition has been reset.
restorecon /data # Avoid predictable entropy pool. Carry over entropy from previous boot.
copy /data/system/entropy.dat /dev/urandom # Create dump dir and collect dumps.
# Do this before we mount cache so eventually we can use cache for
# storing dumps on platforms which do not have a dedicated dump partition.
mkdir /data/dontpanic 0750 root log # Collect apanic data, free resources and re-arm trigger
copy /proc/apanic_console /data/dontpanic/apanic_console
chown root log /data/dontpanic/apanic_console
chmod 0640 /data/dontpanic/apanic_console copy /proc/apanic_threads /data/dontpanic/apanic_threads
chown root log /data/dontpanic/apanic_threads
chmod 0640 /data/dontpanic/apanic_threads write /proc/apanic_console 1
# If there is no fs-post-data action in the init.<device>.rc file, you
# must uncomment this line, otherwise encrypted filesystems
# won't work.
# Set indication (checked by vold) that we have finished this action
#setprop vold.post_fs_data_done 1

在on post-fs-data 目录下

setprop persist.sys.zhang 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 QS_DYNAMIC_WIFI = "qs_dyanmic_wifi";

        /**
* Quick Settings Quick Pulldown
*
* @hide
*/
public static final String QS_QUICK_PULLDOWN = "qs_quick_pulldown"; /**
* Quick Settings Collapse Pane
*
* @hide
*/
public static final String QS_COLLAPSE_PANEL = "qs_collapse_panel"; /**
* Quick Settings Quick access ribbon
*
* @hide
*/
public static final String QS_QUICK_ACCESS = "qs_quick_access"; //别忘了在这里面提添加
public static final String[] SETTINGS_TO_BACKUP = {
QS_QUICK_PULLDOWN
STAY_ON_WHILE_PLUGGED_IN, // moved to global
WIFI_USE_STATIC_IP,
WIFI_STATIC_IP,
WIFI_STATIC_GATEWAY,
WIFI_STATIC_NETMASK,
WIFI_STATIC_DNS1,
WIFI_STATIC_DNS2,
BLUETOOTH_DISCOVERABILITY,
BLUETOOTH_DISCOVERABILITY_TIMEOUT,
DIM_SCREEN,
SCREEN_OFF_TIMEOUT,
SCREEN_BRIGHTNESS,
SCREEN_BRIGHTNESS_MODE,
SCREEN_AUTO_BRIGHTNESS_ADJ,
VIBRATE_INPUT_DEVICES,
MODE_RINGER_STREAMS_AFFECTED,
VOLUME_VOICE,
VOLUME_SYSTEM,
VOLUME_RING,
VOLUME_MUSIC,
VOLUME_ALARM,
}

1)获取方法如下:

Settings.System.getInt(getContentResolver(), Settings.System.QS_QUICK_PULLDOWN,0);

第三个参数是默认值

2)设置

Settings.System.putInt(getContentResolver(),Settings.System.QS_QUICK_PULLDOWN, 1);

代码中使用的时候,需要导入包

需要import android.provider.Settings;

setting.system-全局属性的设定的更多相关文章

  1. HTML5全局属性汇总

    局部属性和全局属性 局部属性:有些元素能规定自己的属性,这种属性称为局部属性.比如link元素,它具有的局部属性有href. rel. hreflang. media. type. sizes这六个. ...

  2. uni-app全局属性和方法

    全局变量和全局方法是软件开发中常用的技术点! 实现方式大致分为: 1.vuex实现,值变动灵活 2.建立js文件,页面内引用 3.挂载vue实例后使用 4.小程序中的globalData 5.本地存储 ...

  3. HTML中的全局属性

    一.全局属性和局部属性 每种元素都有自己规定的属性,这种属性成为局部属性.还有另外一种属性,他可以用来配置所有元素的共有行为,这种属性成为称为全局属性.全局属性可以用在任何一个元素身上,但是不一定会带 ...

  4. 原生JS:全局属性、全局方法详解

    全局属性.全局方法 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5853342.html 首先普及几个我总结的非常实用又很基础的知识:(呵呵,仅 ...

  5. HTML5全局属性和事件详解

    属性: HTML5属性能够赋给标签元素含义和语境,下面的全局属性可用于任何 HTML5 元素. 属性 描述 contenteditable 规定是否允许用户编辑内容. contextmenu 规定元素 ...

  6. HTML的16个全局属性

    前面的话 在HTML中,属性能表达相当丰富的语义,而且属性也会额外提供很多实用的功能,HTML共支持16个常见的全局属性. HTML原有属性 accesskey 作用:浏览器用来创建激活或聚焦元素的快 ...

  7. html5全局属性

    全局属性:对于任何一个标签都是可以使用的属性. 一.data-* 在html5之前需要在html标签上添加自定义属性来存储和操作数据,可能是会写<form role="xxx" ...

  8. JavaScript 全局属性/函数

    JavaScript 全局 JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示 ...

  9. HTML5全局属性和事件

    全局属性和事件能够应用到所有标签元素上,在HTML4中有许多全局属性,比如id,class等.HTML5中又新增了一些特殊功能的全局属性和事件.   属性:   HTML5属性能够赋给标签元素含义和语 ...

随机推荐

  1. 如何使用通用pe工具箱破解开机密码

    下载最新版的通用pe工具箱将u盘制作成启动盘,接着重启连续按热键进入到bios系统下,设置u盘为第一启动,保存重启. 1.这时候会进入通用pe工具箱的选择界面,我们选择第八个“运行Windows登陆密 ...

  2. C# 利用反射和特性 来做一些事情

    特性代码: [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)] public clas ...

  3. SqlCommand的四大方法

    SqlCommand类的方法 ---->>>1.ExecuteNonQuery(); 它的返回值类型为int型.多用于执行增加,删除,修改数据,返回受影响的行数.当select操作时 ...

  4. hight charts

    hight charts http://www.hcharts.cn/resource/index.php http://www.hcharts.cn/api/index.php

  5. I want to do——输入流readline阻塞问题

    据悉,外界对程序员的印象不是木讷就是死板,不是最笨就是不爱说话,不是宅就是闷骚.昨天我们老左批评我说,自从你写了程序了,你以前的优点都退化了.放在去年,我还觉得我没什么啊,程序员就是这样啊,那是因为我 ...

  6. php将数组或字符串写入文件

    //将数组保存在文件里 function export_to_file($file, $variable) { $fopen = fopen($file, 'wb'); if (!$fopen) { ...

  7. KendoUi中KendoDropDownList控件的使用——三级级联模块的实现

    1. 应用需求 在权限系统开发中除了以上数据表关系的设计之外.比較麻烦的地方是级联模块在页面的展示,因为设计中最多是控制到三级,因此三级级联模块的展示.编辑等页面操作是须要解决的问题,这里採用Kend ...

  8. 基于二叉树和双向链表实现限制长度的最优Huffman编码

    该代码採用二叉树结合双向链表实现了限制长度的最优Huffman编码,本文代码中的权重所有採用整数值表示.http://pan.baidu.com/s/1mgHn8lq 算法原理详见:A fast al ...

  9. Impala性能优化

    不多说,直接上干货! • 执行计划 – 查询sql执行之前,先对该sql做一个分析,列出需要完成这一项查询的详细方案 – 命令:explain sql.profile 要点: • 1.SQL优化,使用 ...

  10. #学习笔记#——JavaScript 数组部分编程(三)

    3.在数组 arr 末尾添加元素 item.不要直接修改数组 arr,结果返回新的数组 主要考察数组的concat方法,代码如下: arr.concat(item); concat 方法不修改原数组. ...