本文转载自: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:

  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. Method get = c.getMethod("get", String.class);
  11. result=(String)get.invoke(c, key);
  12. } catch (ClassNotFoundException e) {
  13. // TODO Auto-generated catch block
  14. e.printStackTrace();
  15. } catch (NoSuchMethodException e) {
  16. // TODO Auto-generated catch block
  17. e.printStackTrace();
  18. } catch (IllegalAccessException e) {
  19. // TODO Auto-generated catch block
  20. e.printStackTrace();
  21. } catch (IllegalArgumentException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. } catch (InvocationTargetException e) {
  25. // TODO Auto-generated catch block
  26. e.printStackTrace();
  27. }
  28. return result;
  29. }
  30. /**
  31. * Set the value for the given key.
  32. * @throws IllegalArgumentException if the key exceeds 32 characters
  33. * @throws IllegalArgumentException if the value exceeds 92 characters
  34. */
  35. public static void set(String key, String val) {
  36. try {
  37. Class<?> c = Class.forName("android.os.SystemProperties");
  38. Method set = c.getMethod("set", String.class,String.class);
  39. set.invoke(c, key,val);
  40. } catch (ClassNotFoundException e) {
  41. // TODO Auto-generated catch block
  42. e.printStackTrace();
  43. } catch (NoSuchMethodException e) {
  44. // TODO Auto-generated catch block
  45. e.printStackTrace();
  46. } catch (IllegalAccessException e) {
  47. // TODO Auto-generated catch block
  48. e.printStackTrace();
  49. } catch (IllegalArgumentException e) {
  50. // TODO Auto-generated catch block
  51. e.printStackTrace();
  52. } catch (InvocationTargetException e) {
  53. // TODO Auto-generated catch block
  54. e.printStackTrace();
  55. }
  56. }

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

Android系统属性SystemProperties在应用层的用法【转】的更多相关文章

  1. 修改Android系统属性SystemProperties.set("sys.powerctl", "shutdown")关机分析

    简介: 从之前的博文中我们提到过,关机流程中最后是通过修改Android属性进行关机操作(SystemProperties.java通过JNI调用访问系统属性),当然我们也可以通过adb命令修改And ...

  2. 变化Android系统属性SystemProperties.set(&quot;sys.powerctl&quot;, &quot;shutdown&quot;)关机分析

    基本介绍: 从以前的博客中提到,我们,最后,通过关机过程变化Android关机属性(SystemProperties.java由JNI呼叫接入系统属性),当然,我们也能adb命令变化Android系统 ...

  3. Android 系统属性-SystemProperties详解***

    创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是androi ...

  4. Android系统属性SystemProperties分析

    下面这几个博客总结的不错,有空看下: http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html http://blog.csdn.n ...

  5. Android 系统属性

    /************************************************************************ * Android 系统属性 * 说明: * 由于需 ...

  6. getprop 获取android系统属性

    Android属性系统 property_get/property_set  (很透彻)http://www.blogjava.net/MEYE/articles/359773.html getpro ...

  7. Android的系统属性SystemProperties

    创建与修改android属性用Systemproperties.set(name, value) 获取android属性用Systemproperties.get(name) 注意:android属性 ...

  8. Android系统属性简介

    查看Android源码你会发现,代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置,顾名思义系统属 ...

  9. (转)Android 系统属性SystemProperty分析

    一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置, 顾名思义 ...

随机推荐

  1. CentOS 6.5 安装Gitlab 7.12.2

    官网环境要求 参见:https://github.com/gitlabhq/gitlabhq GitLab is a Ruby on Rails application that runs on th ...

  2. sqoop-1.4.4安装配置

    环境:redhat6.5 hadoop2.4.1 感谢: http://wenku.baidu.com/view/a9083da8dd3383c4bb4cd274.html注释hbase检查 感谢: ...

  3. HDU 2571 命运 (简单DP)

    命运 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...

  4. Dmidecode

    一.Dmidecode简介 DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行 ...

  5. iOS开发笔记--如何实现程序长时间未操作退出

    我们使用金融软件经常会发现手机锁屏或者长时间未操作就会退出程序或者需要重新输入密码等情况.下面让我们看一下如何实现这种功能.我们知道iOS有一个事件循环机制,也就是大家所说的runloop.我们在对程 ...

  6. Android之使用Android-query框架进行开发

    开发Android使用Android-query框架能够快速的,比传统开发android所要编写的代码要少得很多,容易阅读等优势. 下载文档及其例子和包的地址:http://code.google.c ...

  7. PHP判断是手机端访问还是PC端访问网站

    Mobile_Detect 是一个轻量级的开源移动设备(手机)检测的 PHP Class, 它使用 User-Agent 中的字符串,并结合 HTTP Header,来检测移动设备环境. 这个设备检测 ...

  8. 004-诠释 Java 工程师【二】

    三.框架篇 框架基础 反射:反射是Java开发的一类动态相关机制.因为本身Java语言并不是一款动态语言,如果我们想要得到程序动态的效果,因此便引入了反射机制这一概念. 怎么表达反射? 能用反射做什么 ...

  9. R语言(一)

    向量运算 R的强大功能之一就是把整个数据向量作为一个单一对象来处理.一个数据向量仅是数字的排列,一个向量可以通过如下方式构造 weight<-c(,,,) weight [] 结构c(--)用来 ...

  10. javascript高级语法二

    一.BOM对象 1.什么是BOM对象? BOM是浏览器对象模型,核心对象就是window,所有浏览器都支持 window 对象.一个html文档对应一个window对象,主要功能是控制浏览器窗口的, ...