Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.getProperty(param) returns wrong value - Android

steps I do:

I do in code

System.setProperty("myproperty", 1);

and then I set in a shell script the property "myProperty" to 3. like this:

# setprop "myproperty" 3

and then in the code I try to read the property like this:

System.getProperty("myproperty");

I get the value of 1. which means that the set from the shell didn't actually work. but when I print all props from shell with

# getprop

I see in the list that myproperty equals 3.

in shorter words: I want to change the value of a property from a script, and I see that this scripts actually changes the property but in the java code I get the old value.

any ideas?

like image 632
amirelouti Avatar asked Aug 02 '26 08:08

amirelouti


2 Answers

Java code in Android provides System.getProperty and System.setProperty functions in java library but it's important to note that although these java APIs are semantically equal to native version, java version store data in a totally different place. Actually, a hashtable is employed by dalvik VM to store properties. So, java properties are separated, it can't get or set native properties, and neither vice versa.

You can use android.os.SystemProperties class can manipulate native properties, though it's intended for internal usage only. It calls through jni into native property library to get/set properties.

like image 127
Juned Ahsan Avatar answered Aug 03 '26 22:08

Juned Ahsan


getprop/setprop work on android.os.SystemProperties, not on java.lang.System.

Unfortunately, this class is not available to third party application. Apparently you have rooted your device, so you may still access it.

like image 39
njzk2 Avatar answered Aug 03 '26 22:08

njzk2



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!