zoukankan      html  css  js  c++  java
  • 给android添加系统属性:Settings.system和SystemProperties

    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 plaincopy
     
    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的语法有关。

     

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

  • 相关阅读:
    10. Regular Expression Matching
    9. Palindrome Number (考虑负数的情况)
    8. String to Integer (整数的溢出)
    7. Reverse Integer (整数的溢出)
    LeetCode Minimum Size Subarray Sum
    LeetCode Course Schedule II
    Linux 文件缓存 (一)
    LeetCode Tries Prefix Tree
    Linux : lsof 命令
    LeetCode Binary Tree Right Side View
  • 原文地址:https://www.cnblogs.com/wanqieddy/p/3128102.html
Copyright © 2011-2022 走看看