gpt4 book ai didi

Android Library 目标编译和后续 Android 版本中的对象

转载 作者:行者123 更新时间:2023-11-30 04:30:35 25 4
gpt4 key购买 nike

我正在构建一个 Android 库,并且有一个方法可以获取有关设备的一些信息。我们的目标是支持 2.2 及更高版本,但想知道是否有一种方法可以收集更高版本中引入的信息(2.3 中的设备序列号)并让应用程序设置为 2.2 版进行编译。

四处搜索后,我发现有人使用如下代码:

private static String getHardwareSerial() {
try {
return Build.SERIAL;
} catch (VerifyError e) {
//Android 8 and previous did not have this information
return Build.UNKNOWN;
}
}

但是,在存在此代码的情况下,当将构建目标设置为 8 时,我使用我们的库的示例应用程序无法构建。有什么建议,或者我们是否必须接受我们的客户将他们的目标设置为 9 才能获取此信息?

最佳答案

你可以通过反射(reflection)来做到这一点:

public static String getHardwareSerial() {
try {
Field serialField = Build.class.getDeclaredField("SERIAL");
return (String)serialField.get(null);
}
catch (NoSuchFieldException nsf) {
}
catch (IllegalAccessException ia) {
}
return Build.UNKNOWN;
}

如果未找到该字段(在早期版本的操作系统上),它将抛出一个异常,该异常将被忽略,然后返回 Build.UNKNOWN。

关于Android Library 目标编译和后续 Android 版本中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7798543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com