zoukankan      html  css  js  c++  java
  • Android系统属性SystemProperties在应用层的用法【转】

    本文转载自:https://blog.csdn.net/lilidejing/article/details/53288243

            偷笑如果你看到这篇文章了,说明你已经是资深程序员,会发现整个Android系统有很多地方有用到这个SystemProperties这个系统属性文件。

            关于SystemProperties有什么作用,一般用来嘎哈,大家可以到网上了解它的相关资料,还是比较多的。

            最常用的方法是SystemProperties.set()/SystemProperties.get(),通过这两个接口可以对系统的属性进行设置/读取。

                 但是,这两个接口并没有对应用层开放。目前,有两种方法,可以实现应用层使用这两个接口:

                 1,项目导入系统jar包,这样就可以直接导入相应的包名用了。

                         导入系统jar包的方法参考:http://blog.csdn.net/lilidejing/article/details/53269896

              2,利用java反射

                          代码如下,示例分别是调用get和set:

    [java] view plain copy
     
    1. /** 
    2.      * Get the value for the given key. 
    3.      * @return an empty string if the key isn't found 
    4.      * @throws IllegalArgumentException if the key exceeds 32 characters 
    5.      */  
    6.     public static String get(String key) {  
    7.         String result="";  
    8.          try {  
    9.              Class<?> c = Class.forName("android.os.SystemProperties");  
    10.                
    11.              Method get = c.getMethod("get", String.class);  
    12.              result=(String)get.invoke(c, key);  
    13.                
    14.         } catch (ClassNotFoundException e) {  
    15.             // TODO Auto-generated catch block  
    16.             e.printStackTrace();  
    17.         } catch (NoSuchMethodException e) {  
    18.             // TODO Auto-generated catch block  
    19.             e.printStackTrace();  
    20.         } catch (IllegalAccessException e) {  
    21.             // TODO Auto-generated catch block  
    22.             e.printStackTrace();  
    23.         } catch (IllegalArgumentException e) {  
    24.             // TODO Auto-generated catch block  
    25.             e.printStackTrace();  
    26.         } catch (InvocationTargetException e) {  
    27.             // TODO Auto-generated catch block  
    28.             e.printStackTrace();  
    29.         }  
    30.         return result;  
    31.     }  
    32.   
    33.        /** 
    34.      * Set the value for the given key. 
    35.      * @throws IllegalArgumentException if the key exceeds 32 characters 
    36.      * @throws IllegalArgumentException if the value exceeds 92 characters 
    37.      */  
    38.     public static void set(String key, String val) {  
    39.          try {  
    40.                 Class<?> c = Class.forName("android.os.SystemProperties");  
    41.                 Method set = c.getMethod("set", String.class,String.class);  
    42.                 set.invoke(c, key,val);  
    43.           } catch (ClassNotFoundException e) {  
    44.               // TODO Auto-generated catch block  
    45.               e.printStackTrace();  
    46.           } catch (NoSuchMethodException e) {  
    47.               // TODO Auto-generated catch block  
    48.               e.printStackTrace();  
    49.           } catch (IllegalAccessException e) {  
    50.               // TODO Auto-generated catch block  
    51.               e.printStackTrace();  
    52.           } catch (IllegalArgumentException e) {  
    53.               // TODO Auto-generated catch block  
    54.               e.printStackTrace();  
    55.           } catch (InvocationTargetException e) {  
    56.               // TODO Auto-generated catch block  
    57.               e.printStackTrace();  
    58.           }  
    59.             
    60.     }  

                         应用要使用SystemProperties的属性,前提是应用需要有系统权限,即要系统签名。系统签名的方法可以参考:http://blog.csdn.net/lilidejing/article/details/45098879

  • 相关阅读:
    贡献15本经典C、C++、MFC、VC++教程,都是pdf完整版的
    雪花
    孙鑫C++视频教程 rmvb格式 全20CD完整版 精品分享
    mac上用VMWare虚拟机装win7
    阿里云如何解析域名,搭建云服务器环境
    2. Windows编程基础
    复制指定目录下的全部文件到另一个目录中
    Select查询命令
    使用OneNote2016发送博客
    Linux数字雨
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9141932.html
Copyright © 2011-2022 走看看