I am trying to use some arguments for an Instrumentation test. I noticed that I can read system properties with System.getProperty()
function. So I use setprop command to set a system property. For example: adb shell setprop AP 123
. Inside my Test code I try to read this AP property with :
tmp = System.getProperty("AP"); Log.d("MyTest","AP Value = " + tmp);
Then I use logcat to view this debug message but I get a null value for this property. Any ideas on what could be wrong? Note that I can still read the system property with adb shell getprop AP
command.
The setprop and getprop commands are used to access the data in that database. Unless the property name starts with persist. - then the value gets stored in /data/property folder. Follow this answer to receive notifications.
To get the property set by 'setprop', there are two options:
One. use android.os.SystemProperties, this is a hide API. use it like this:
Class clazz = null; clazz = Class.forName("android.os.SystemProperties"); Method method = clazz.getDeclaredMethod("get", String.class); String prop = (String)method.invoke(null, "AP"); Log.e("so_test", "my prop is: <" + prop + ">");
Two. use 'getprop' utility:
Process proc = Runtime.getRuntime().exec(new String[]{"/system/bin/getprop", "AP"}); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); Log.e("so_test", "my prop is: " + reader.readLine());
Maybe using functions availble in NDK is an option too, but why bother?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With