I need to set and get a system property named "persist.sys.aabbcc". I was able to read / write the value using adb shell command like this:
adb shell setprop persist.sys.aabbcc 123456
and:
adb shell getprop persist.sys.aabbcc
123456
I also able to 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 Linux command exec:
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) that property. My code (that seems not working) was:
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= "";
}
Not working also using exec:
process = Runtime.getRuntime().exec("setprop persist.sys.aabbcc 555");
Please could you tell me if you are able to set a system property in Android java? Thanks.