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

posted @ 2018-06-05 21:09  请给我倒杯茶  阅读(536)  评论(0编辑  收藏  举报