How to use android.os.SystemProperites

Article Outline

What's SystemProperies?

SystemProperties is gives access to the system properties store. The system properties store contains a list of string key-value pairs. It's very nice, but marked hide, we can't use it!

You can use adb shell getprop print the info if you installed android sdk. In a similar way, use adb shell setprop key value put key-value to systemproperties.

How to use SystemProperties?

By reflection

{% highlight java %} ClassLoader cl = context.getClassLoader(); Class<?> SystemProperties = cl.loadClass("android.os.SystemProperties");

//Parameters Types @SuppressWarnings("rawtypes") Class[] paramTypes = { String.class }; Method get = SystemProperties.getMethod("get", paramTypes);

//Parameters Object[] params = { key }; String ret = (String) get.invoke(SystemProperties, params); {% endhighlight %}

Get the source code include your project

SystemProperites.java be located AOSP/frameworks/base/core/java/android/os/SystemProperties.java, Because of invoke jni, so it's trouble.

Use command adb shell getprop

{% highlight java %} try { Process ifc = Runtime.getRuntime().exec("getprop ro.debuggable"); BufferedReader bis = new BufferedReader(new InputStreamReader(ifc.getInputStream())); String line = bis.readLine(); ifc.destroy(); } catch (java.io.IOException e) { } {% endhighlight %}


I think use the reflection is convenience. the full Source SystemPropertiesProxy