Where is android.os.SystemProperties?
This is the class in the Android source code:
https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/SystemProperties.java
See {@hide}
in the class JavaDoc? That means this class won't be exported as part of the public SDK.
The camera app uses it as it's internal and they won't use the public SDK to build it.
You may still be able to get at this class
by reflection or
by getting the source, removing
@hide
and making your own
customized SDK.
However pretty much by definition you are now going 'off SDK
' and therefore your app may well be broken or get different behavior on OS versions as the Android folks will make little effort not to change this class between versions.
how to import android.os.SystemProperties
SystemProperties
is a hidden class that is only available to platform-level code. You could try to access it via reflection, but this is not recommended.
It is easy to confuse Android's SystemProperties
class with the old-style Java way of doing properties, namely java.lang.System.getProperty()
. Note that these are two totally separate systems. An important difference is that the Java mechanism works only within a given process, whereas the Android SystemProperties
works across processes.
As an app developer, although you don't normally get a Java-based API into Android's Android SystemProperties
, you can inspect the SystemProperties
at the command-line using
adb shell getprop
can't import android.os.SystemProperties in Camera app
SystemProperties class is setted 'hide' annotation.
So you want to use this class in application layer,
you have to use refelection.
the definition of SystemProperties class is below.
package android.os;
/**
* Gives access to the system properties store. The system properties
* store contains a list of string key-value pairs.
*
* {@hide}
*/
public class SystemProperties
Android System Properties
SystemProperties.set()
and adb shell setprop
are inter-operable: they both alter the same system property value.
However, System.setProperty()
is Java and VM specific, and uses different key/value naming convention.
using SystemProperties to get Serial (Brand, Device.. etc) on Android
as Hacketo linked to Where is android.os.SystemProperties
android.os.SystemProperties
is hidden, non public API,
that can be seen at raw version http://grepcode.com/file_/repository.grepcode.com/java/ext/com.google.android/android/2.3_r1/android/os/SystemProperties.java/?v=source
One of the ways to call it (though may be not available in some versions) is using reflection.
So the code is ike
String serial = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) {
serial = Build.SERIAL;
} else {
try {
Class<?> c = Class.forName("android.os.SystemProperties");
Method get = c.getMethod("get", String.class);
serial = (String) get.invoke(c, "ro.serialno");
} catch (Exception ignored) {
}
}
Doclava cannot find symbol SystemProperties (Android javadoc)
I've found an answer of sorts. See Where is android.os.SystemProperties?.
Essentially, android.os.SystemProperies is an internal class deliberately 'hidden' from the published SDK API and so really it shouldn't be in use. Because it is hidden with @hide it's invisible to javadoc / doclava, hence the error.
The ideal answer to my original question would have been one that somehow pacified javadoc without having to mod the source code. I don't think that is possible but if anyone out there knows different, I'd be grateful.
Android Systemproperties.set doesn't work
I think you need prefix name "persist.sys."
And then AndroidManifest.xml add (android:sharedUserId="android.uid.system")
And then Android.mk add (LOCAL_CERTIFICATE :=platform)
Related Topics
How to Get the Height and Width of the Android Navigation Bar Programmatically
Find Distance Between Two Points on Map Using Google Map API V2
Android:Loading an Image from the Web with Asynctask
How to Handle an Asynctask During Screen Rotation
How to Detect User Pressing Home Key in My Activity
Google Play Services Library Update and Missing Symbol @Integer/Google_Play_Services_Version
Android: How Does Bitmap Recycle() Work
Unable Instantiate Android.Gms.Maps.Mapfragment
What Characters Allowed in File Names on Android
Android Listview Not Refreshing After Notifydatasetchanged
Passing Data Between Fragments to Activity
Android. How Does Notifydatasetchanged() Method and Listviews Work
How to Display Inline Images from HTML in an Android Textview