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. 学习中 常用到的string内置对象方法的总结

    //concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串. var str = "Hello"; var out = str.concat(" Wor ...

  2. Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制)

    Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制) 首先贴上七个控制布局代码 1.title_text_sel.xml 字体颜色的切换 放到color文件夹下面 <?xm ...

  3. jquery.base64.js

    (function($) { $.base64 = function(options) { var defaults = { data:"", type:0, unicode:tr ...

  4. How Chromium Displays Web Pages: Bottom-to-top overview of how WebKit is embedded in Chromium

    How Chromium Displays Web Pages This document describes how web pages are displayed in Chromium from ...

  5. 打印机共享 : 客户端 连接服务器打印机时提示"无法连接到打印机“

    1.就是重启一下服务器端的Print Spooler服务就行了,这么简单! 2.修改打印机的共享名 操作无法完成(错误0x00000709).再次检查打印机名称,并确保打印机已连接到网络.(xp系统本 ...

  6. scrapy框架设置代理

    网易音乐在单ip请求下经常会遇到网页返回码503的情况经查询,503为单个ip请求流量超限,猜测是网易音乐的一种反扒方式因原音乐下载程序采用scrapy框架,所以需要在scrapy中通过代理的方式去解 ...

  7. 记一次 Apache HUE 优化之因使用 Python 魔术方法而遇到的坑

    最近的工作是基于 Apache HUE 做二次开发.刚接手 HUE 的代码的时候,内心是崩溃的:开源的代码,风格很多种, 代码比较杂乱; 虽是基于 Django 开发的,但是项目的结构改变很大; 很多 ...

  8. 详解:Linux Chrony 设置服务器集群同步时间

    导读: Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让 ...

  9. Zookeeper vs. etcd

    etcd是go语言实现的. 对比,可以参考这篇文章: http://studygolang.com/articles/4837 <服务发现:Zookeeper vs etcd vs Consul ...

  10. AES加密解密&amp;&amp;SHA1、SHA加密&amp;&amp;MD5加密

    AES加密解密 SHA1.SHA加密 MD5加密 二话不说立即附上代码: package com.luo.util; import java.io.UnsupportedEncodingExcepti ...