Build.VERSION.SDK_INT仅在API级别4(1.6)中添加。是否可以确定手机是否具有API级别3(1.5)?
答案 0 :(得分:3)
您可以使用Build.VERSION.SDK返回String,并且在1.6之前的所有Android版本上都可用。它被标记为已弃用,因此您应该使用反射来确保您的应用在未来版本的Android上不会遇到问题。
因此,要确保所有版本<支持1.6,您可以使用Alexs代码的修改版本;
public static int getPlatformVersion() {
try {
Field verField = Class.forName("android.os.Build$VERSION").getField("SDK_INT");
int ver = verField.getInt(verField);
return ver;
} catch (Exception e) {
try {
Field verField = Class.forName("android.os.Build$VERSION").getField("SDK");
String verString = (String) verField.get(verField);
return Integer.parseInt(verString);
} catch(Exception e) {
return -1;
}
}
}
答案 1 :(得分:1)
public static int getPlatformVersion() {
try {
Field verField = Class.forName("android.os.Build$VERSION")
.getField("SDK_INT");
int ver = verField.getInt(verField);
return ver;
} catch (Exception e) {
// android.os.Build$VERSION is not there on Cupcake
return 3;
}
}
答案 2 :(得分:1)
由于它完全与静态字段有关,因此更容易实现,如下所示:
public static int getVersion() {
try {
return Class.forName("android.os.Build$VERSION").getField("SDK_INT").getInt(null);
} catch (Exception ex) {
try {
return Integer.parseInt((String) Class.forName("android.os.Build$VERSION").getField("SDK").get(null));
} catch (Exception ex1) {
return 0;
}
}
}
答案 3 :(得分:0)
我会尝试通过反射访问该属性,如果失败,则您使用的是Android 1.5。