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. netflix feign概述

    1.什么是feign?feign的作用是什么? Feign is a java to http client binder inspired by Retrofit, JAXRS-2.0, and W ...

  2. NET Native

    起因源自于微软在 MSDN 博客上宣布了 .NET Native 的开发者预览版..NET Native 可以将 C# 代码编译成本地机器码.有了它,开发者将不仅能享受 C# 的高生产力,而且能拥有 ...

  3. java引用被设置为null的疑惑

    a=null; public class C { protected A webDigester = new A(" first one "); public void test( ...

  4. Coderfroces 864 E. Fire(01背包+路径标记)

    E. Fire http://codeforces.com/problemset/problem/864/E Polycarp is in really serious trouble — his h ...

  5. C# Dapper 基本使用 增删改查事务等

    using DapperTest.Models; using System.Collections.Generic; using System.Web.Http; using Dapper; usin ...

  6. js中迭代的常用几种方法

    var arr = [1,3,2,5,3]; //forEach 两个参数,第一个为数组内容,第二个为数组下标arr.forEach(function(item,index) { console.lo ...

  7. Scrapy框架之日志等级

    一.日志等级 CRITICAL:严重错误 ERROR:一般错误 WARNING:警告 INFO: 一般信息 DEBUG:调试信息 [注意:默认的日志等级是DEBUG] 二.日志等级设置 修改setti ...

  8. [Python] Check for None (Null) in Python

    If you’ve used other programming languages, you may have learned that an empty object is not the sam ...

  9. HDOJ 4460 Friend Chains 图的最长路

    类似于树的直径,从随意一个点出发,找到距离该点最远的且度数最少的点. 然后再做一次最短路 Friend Chains Time Limit: 2000/1000 MS (Java/Others)    ...

  10. Eclipse上开发IBM Bluemix应用程序

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka 摘要:本文主要解说了怎样使用安装EclipseIBM Bluemix插件.并在Eclipse ...