给android添加系统属性:Settings.system和SystemProperties_那么我们可以仿照settings.system.scrren_off_timeout这个系统设置的方-程序员宅基地

技术标签: android 设置系统属性  android  

SystemProperties與Settings.System

 

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 <cutils/properties.h>

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 plain copy
 
  1. public static final String SILVAN_LIU = "silvan_liu";  
  2.  public static final String[] SETTINGS_TO_BACKUP ={  
  3.             ~  
  4.        +SILVAN_LIU  
  5.               ~     
  6. }  

这样添加后,你就是可以通过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系统都能访问的属性;

2.该属性值永久保存;

 

那么我们可以仿照Settings.System.SCRREN_OFF_TIMEOUT这个系统设置的方式来新建一个系统设置值;

操作步骤如下:

1. 设置该值的关键字;

涉及文件:frameworks/base/core/java/android/provider/Settings.java 

2. 初始化该属性值;

涉及文件:frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java

涉及函数:private void loadSystemSettings(SQLiteDatabase db);

 

3. 如果改值为String型,则需在xml中设置其初始值;

涉及文件:frameworks/base/packages/SettingsProvider/res/values/defaults.xml

以上是我实际项目中运用到的地方,可能认识的不够深刻,还需继续摸索。

 
 
 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Wilsonboliu/article/details/17389797

智能推荐

【附源码】计算机毕业设计java学生学科竞赛管理系统设计与实现_学科竞赛管理系统开发与应用-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏20次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM + mybatis + Maven + Vue 等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。_学科竞赛管理系统开发与应用

matlab错误使用 矩阵维度必须一致,错误使用 + 矩阵维度必须一致-程序员宅基地

文章浏览阅读1.5k次。function dx=shuangzhou(t,x,Tmh,Tmp,Mh,Ihx,Ihy,Ihz,Ihxy,Ihxz,Ihyz,Mp,Ipx,Ipy,...Ipz,Ipxy,Ipxz,Ipyz,g,xh,yh,zh,xp,yp,zp,xhp,yhp,zhp,xch,ych,zch,u,v,w,...p,q,r,theta,varphi,Ch,Cp,Kp)A=p*cos(x(1))*cos(x(2..._错误使用+

Java 异常:捕获异常_java子异常与父异常如何补获-程序员宅基地

文章浏览阅读611次。语法结构 1.捕获异常语法结构: 红框:使用try{}块来抛出异常蓝框:使用try{}块来抛出异常橙框:由于对循环体中的异常进行了捕获处理,所以该行代码可以执行 2.try…catch…finally异常处理结构中,try语句块是必须的, catch和finally语句块至少出现一个。 3.注意:如果try语句块包含的是检查时异常,则在没有..._java子异常与父异常如何补获

【最新Unity3D—Particle System粒子系统】最新Unity2017.2018.2019.2020均适用且超详细_unity particle system 实例化-程序员宅基地

文章浏览阅读299次。方法1.GameObject中选择Particle System,即可在场景中创建粒子系统对象方法2.先create empty ,再到Component中选择Effects后,选择Particle System,即为该空物体添加了粒子系统组件。_unity particle system 实例化

通过EasyX实现Bresenham画线_easyx线条粗细-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏3次。基本上Bresenham画线算法的思路如下:// 假设该线段位于第一象限内且斜率大于0小于1,设起点为(x1,y1),终点为(x2,y2).// 根据对称性,可推导至全象限内的线段.1.画起点(x1,y1).2.准备画下个点。x坐标增1,判断如果达到终点,则完成。否则,由图中可知,下个要画的点要么为当前点的右邻接点,要么是当前点的右上邻接点.2.1.如果线段ax+by+c=0与x=x1..._easyx线条粗细

i5-1035G1和R7 4800U 哪个好_r74800u和i51035g1哪个好-程序员宅基地

文章浏览阅读7.7k次。酷睿i5-1035G1是一款高效的四核SoC,适用于基于Ice -Lake-U 系列的笔记本电脑和超极本 。它集成了四个Sunnycove处理器内核(由于HyperThreading而支持8个线程),主频为1(基本) – 3.7(单核Turbo)GHz。选锐龙i5-1035G1 还是R7 4800U 哪个好 https://list.jd.com/list.html使用Turbo Boost,2个内核可以达到3.6 GHz,所有4个3.3 GHz。据英特尔称,Sunnycove内核的IPC数量增加了1_r74800u和i51035g1哪个好

随便推点

OpenGL SuperBible 7th源码编译记录_superbible7-media github-程序员宅基地

文章浏览阅读765次。OpenGL SuperBible 7th 源码编译_superbible7-media github

Wireshark简单使用-程序员宅基地

文章浏览阅读794次,点赞14次,收藏18次。wireshark下载、安装、使用教程

MXNet 粗糙的使用指南_iou loss mxnet-程序员宅基地

文章浏览阅读288次。MXNet 粗糙的使用指南写于2020年3月24日,最新的CUDA版本为10.2MXNet简介MXNet是一个(跟TF与Torch相比特别小众的)多平台神经网络框架。优点:灵活,多平台,可移植性强。工业界常用框架。缺点:复杂,难以入门,基本没有教材。只能依靠代码来学习代码。框架介绍MXNet现在存在两种界面:symbol与gluon。Symbol的设计思路与T..._iou loss mxnet

iOS对ipa包进行代码混淆《二》 ---代码混淆_ipa包混淆-程序员宅基地

文章浏览阅读1.3k次。接上一篇文章ipa包砸壳,接下来讲一下代码混淆。混淆代码,我们需要生成两个文件confuse.sh和func.list。confuse.sh是一个脚本文件,里边定义了混淆的一些算法,以及需要混淆方法的路径。func.list是我们列举的一些需要混淆的方法。当然系统的方法不能混淆,不然一些库文件方法没办法正确加载。1、首先,终端cd到文件目录,并且利用指令touch生成这两个文件touch confuse.shtouch func.list不出意外,文件目录里已经有这两个文件了。_ipa包混淆

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。