I need to set and get a system property called "persist.sys.aabbcc". I was able to read / write the value using adb shell command as follows:
adb shell setprop persist.sys.aabbcc 123456
and:
adb shell getprop persist.sys.aabbcc 123456
I can also read this property in java Android using Reflection:
@SuppressWarnings("rawtypes") Class SystemProperties = Class.forName("android.os.SystemProperties"); //Parameters Types @SuppressWarnings("rawtypes") Class[] paramTypes = new Class[1]; paramTypes[0] = String.class; Method get = SystemProperties.getMethod("get", paramTypes); //Parameters Object[] params = new Object[1]; params[0] = new String("persist.sys.aabbcc"); ret = (String) get.invoke(SystemProperties, params);
Or using the Linux exec command:
try { String line; java.lang.Process p = Runtime.getRuntime().exec("getprop persist.sys.aabbcc"); BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream())); while ((line = input.readLine()) != null) { System.out.println(line); Log.d("HelloDroid", line); } input.close(); } catch (Exception err) { err.printStackTrace(); }
However, I cannot set (write) this property. My code (doesn't seem to work):
try { @SuppressWarnings("rawtypes") Class SystemProperties = Class.forName("android.os.SystemProperties"); Method set1 = SystemProperties.getMethod("set", new Class[] {String.class, String.class}); set1.invoke(SystemProperties, new Object[] {"persist.sys.aabbcc", "999999"}); } catch( IllegalArgumentException iAE ){ throw iAE; } catch( Exception e ){ ret= ""; }
Using exec also doesn't work:
process = Runtime.getRuntime().exec("setprop persist.sys.aabbcc 555");
Please, could you tell me if you can set the system property in Android java? Thanks.
source share