6

我正在尝试使用

SystemProperties.get();

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

4

6 回答 6

11

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

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

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

adb shell getprop
于 2012-10-24T23:35:40.733 回答
3

您可以导入导入android.os.Bundle;然后您可以使用System.getProperty("os.name");访问系统属性

您可以使用 System.getProperty('Property name'); 访问任何属性;

于 2012-05-02T07:54:11.180 回答
0

将“layoutlib.jar”添加到项目的 Java 构建路径,然后,您可以使用“import android.os.SystemProperties;”

于 2014-11-18T07:12:38.067 回答
0

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

只需要导入android.os.Build;

于 2014-12-26T02:41:05.190 回答
0

您可以尝试的一件事是,评论

LOCAL_SDK_VERSION := 当前

在 Android.mk 中。使用这种方式,您可以从应用程序调用隐藏的 API

于 2019-06-18T14:03:06.853 回答
-1

一种 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'
        }
    }
}
于 2019-05-18T12:02:17.760 回答