我想使用
SystemProperties.get();
我无法导入android.os.SystemProperties
包,经过一番搜索,发现它是隐藏的。有没有什么解决方法呢?
我想使用
SystemProperties.get();
我无法导入android.os.SystemProperties
包,经过一番搜索,发现它是隐藏的。有没有什么解决方法呢?
SystemProperties
是一个隐藏的类,仅限平台级别代码使用。你可以尝试通过反射来访问它,但这并不被推荐。
很容易将Android的SystemProperties
类与旧式Java属性处理方式混淆,即java.lang.System.getProperty()
。请注意,这两个是完全独立的系统。一个重要的区别是,Java机制仅在给定进程内工作,而Android的SystemProperties
跨进程工作。
作为应用程序开发者,虽然你通常无法获得基于Java的API访问Android的SystemProperties
,但可以使用命令行检查SystemProperties
。
adb shell getprop
你可以通过使用System.getProperty('属性名称')来访问任何属性。
如果想获取设备属性, 关于操作系统信息,您可以查看http://developer.android.com/reference/android/os/Build.html
只需要导入android.os.Build;
LOCAL_SDK_VERSION := current
这样,你就可以从应用程序中调用隐藏的API了。一个巧妙的方法是在类路径上创建自己的SystemProperties
类,以便您的代码可以编译和工作,然后从构建中排除它。如果该类存在于Android设备上,则可以正常工作。我经常为非常特定的情况这样做,但我不建议在商业应用程序中使用,因为涉及各种版本和设备。
您可以基于源代码类,并只保留您需要的API。
示例类:
package android.os;
public class SystemProperties {
public static String get(String key) {
return "";
}
}
然后你只需要在gradle文件中从你的android/sourcesets/main中排除那个类,例如:
sourceSets {
main {
java {
exclude 'android/**/*.java'
}
}
}