我正在尝试使用
SystemProperties.get();
但无法导入谷歌搜索的android.os.SystemProperties
包位告诉我它是隐藏的,有什么办法解决这个问题吗?
我正在尝试使用
SystemProperties.get();
但无法导入谷歌搜索的android.os.SystemProperties
包位告诉我它是隐藏的,有什么办法解决这个问题吗?
SystemProperties
是一个隐藏类,仅对平台级代码可用。您可以尝试通过反射访问它,但不建议这样做。
很容易将 Android 的SystemProperties
类与老式 Java 处理属性的方式混淆,即java.lang.System.getProperty()
. 请注意,这是两个完全独立的系统。一个重要的区别是 Java 机制仅在给定进程内工作,而 AndroidSystemProperties
跨进程工作。
作为应用程序开发人员,虽然您通常不会在 Android 的 Android 中获取基于 Java 的 API SystemProperties
,但您可以SystemProperties
在命令行中使用
adb shell getprop
您可以导入导入android.os.Bundle;然后您可以使用System.getProperty("os.name");访问系统属性
您可以使用 System.getProperty('Property name'); 访问任何属性;
将“layoutlib.jar”添加到项目的 Java 构建路径,然后,您可以使用“import android.os.SystemProperties;”
如果想获取设备属性,有关操作系统信息,您可以查看http://developer.android.com/reference/android/os/Build.html
只需要导入android.os.Build;
您可以尝试的一件事是,评论
LOCAL_SDK_VERSION := 当前
在 Android.mk 中。使用这种方式,您可以从应用程序调用隐藏的 API
一种 hacky 方法是在你的类路径上创建你自己的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'
}
}
}