setting.system-全局属性的设定
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-全局属性的设定的更多相关文章
- HTML5全局属性汇总
局部属性和全局属性 局部属性:有些元素能规定自己的属性,这种属性称为局部属性.比如link元素,它具有的局部属性有href. rel. hreflang. media. type. sizes这六个. ...
- uni-app全局属性和方法
全局变量和全局方法是软件开发中常用的技术点! 实现方式大致分为: 1.vuex实现,值变动灵活 2.建立js文件,页面内引用 3.挂载vue实例后使用 4.小程序中的globalData 5.本地存储 ...
- HTML中的全局属性
一.全局属性和局部属性 每种元素都有自己规定的属性,这种属性成为局部属性.还有另外一种属性,他可以用来配置所有元素的共有行为,这种属性成为称为全局属性.全局属性可以用在任何一个元素身上,但是不一定会带 ...
- 原生JS:全局属性、全局方法详解
全局属性.全局方法 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5853342.html 首先普及几个我总结的非常实用又很基础的知识:(呵呵,仅 ...
- HTML5全局属性和事件详解
属性: HTML5属性能够赋给标签元素含义和语境,下面的全局属性可用于任何 HTML5 元素. 属性 描述 contenteditable 规定是否允许用户编辑内容. contextmenu 规定元素 ...
- HTML的16个全局属性
前面的话 在HTML中,属性能表达相当丰富的语义,而且属性也会额外提供很多实用的功能,HTML共支持16个常见的全局属性. HTML原有属性 accesskey 作用:浏览器用来创建激活或聚焦元素的快 ...
- html5全局属性
全局属性:对于任何一个标签都是可以使用的属性. 一.data-* 在html5之前需要在html标签上添加自定义属性来存储和操作数据,可能是会写<form role="xxx" ...
- JavaScript 全局属性/函数
JavaScript 全局 JavaScript 全局属性和方法可用于创建Javascript对象. JavaScript 全局属性 属性 描述 Infinity 代表正的无穷大的数值. NaN 指示 ...
- HTML5全局属性和事件
全局属性和事件能够应用到所有标签元素上,在HTML4中有许多全局属性,比如id,class等.HTML5中又新增了一些特殊功能的全局属性和事件. 属性: HTML5属性能够赋给标签元素含义和语 ...
随机推荐
- 学习中 常用到的string内置对象方法的总结
//concat() – 将两个或多个字符的文本组合起来,返回一个新的字符串. var str = "Hello"; var out = str.concat(" Wor ...
- Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制)
Android 仿QQ首页的消息和电话的切换,首页的头部(完全用布局控制) 首先贴上七个控制布局代码 1.title_text_sel.xml 字体颜色的切换 放到color文件夹下面 <?xm ...
- jquery.base64.js
(function($) { $.base64 = function(options) { var defaults = { data:"", type:0, unicode:tr ...
- 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 ...
- 打印机共享 : 客户端 连接服务器打印机时提示"无法连接到打印机“
1.就是重启一下服务器端的Print Spooler服务就行了,这么简单! 2.修改打印机的共享名 操作无法完成(错误0x00000709).再次检查打印机名称,并确保打印机已连接到网络.(xp系统本 ...
- scrapy框架设置代理
网易音乐在单ip请求下经常会遇到网页返回码503的情况经查询,503为单个ip请求流量超限,猜测是网易音乐的一种反扒方式因原音乐下载程序采用scrapy框架,所以需要在scrapy中通过代理的方式去解 ...
- 记一次 Apache HUE 优化之因使用 Python 魔术方法而遇到的坑
最近的工作是基于 Apache HUE 做二次开发.刚接手 HUE 的代码的时候,内心是崩溃的:开源的代码,风格很多种, 代码比较杂乱; 虽是基于 Django 开发的,但是项目的结构改变很大; 很多 ...
- 详解:Linux Chrony 设置服务器集群同步时间
导读: Chrony是一个开源的自由软件,像CentOS 7或基于RHEL 7操作系统,已经是默认服务,默认配置文件在 /etc/chrony.conf 它能保持系统时间与时间服务器(NTP)同步,让 ...
- Zookeeper vs. etcd
etcd是go语言实现的. 对比,可以参考这篇文章: http://studygolang.com/articles/4837 <服务发现:Zookeeper vs etcd vs Consul ...
- AES加密解密&&SHA1、SHA加密&&MD5加密
AES加密解密 SHA1.SHA加密 MD5加密 二话不说立即附上代码: package com.luo.util; import java.io.UnsupportedEncodingExcepti ...