如何导入android.os.SystemProperties

时间:2012-05-02 07:46:03

标签: android

我正在尝试使用

SystemProperties.get();

但是无法导入谷歌搜索的android.os.SystemProperties包裹告诉我它隐藏了,有什么方法可以解决这个问题吗?

6 个答案:

答案 0 :(得分:8)

SystemProperties是一个隐藏类,仅适用于平台级代码。您可以尝试通过反射访问它,但不建议这样做。

很容易将Android的SystemProperties类与旧式的Java属性方法混淆,即java.lang.System.getProperty()。请注意,这是两个完全独立的系统。一个重要的区别是Java机制只能在给定的进程中工作,而Android SystemProperties可以跨进程工作。

作为应用程序开发人员,虽然您通常不会在Android的Android SystemProperties中获得基于Java的API,但您可以使用

在命令行检查SystemProperties。
adb shell getprop

答案 1 :(得分:2)

您可以导入导入android.os.Bundle; ,然后您可以使用 System.getProperty(“os.name”);

访问系统属性

您可以使用System.getProperty('Property name');

访问任何属性

答案 2 :(得分:0)

将'layoutlib.jar'添加到项目的Java Build Path中,然后,您可以使用“import android.os.SystemProperties;”

答案 3 :(得分:0)

如果想获得设备属性, 对于操作系统信息,您可以查看http://developer.android.com/reference/android/os/Build.html

只需要导入android.os.Build;

答案 4 :(得分:0)

一种骇人听闻的方法是在类路径上创建自己的SystemProperties类,以便代码可以编译和运行,然后将其从构建中排除。如果该类存在于android设备上,则可以正常工作。我经常在非常特殊的情况下执行此操作,但是我不建议在商业应用程序中针对各种版本和设备执行此操作。

您可以将其基于source code类,仅保留所需的api。

示例类:

package android.os;

public class SystemProperties {

    public static String get(String key) {
        return "";
    }

}

然后,您只需要从gradle文件中的android / sourcesets / main中排除该类,例如:

sourceSets {
    main {
        java {
            exclude 'android/**/*.java'
        }
    }
}

答案 5 :(得分:0)

您可以尝试的一件事是,对

进行注释

LOCAL_SDK_VERSION:=当前

在Android.mk中。通过这种方式,您可以从应用中调用隐藏的api