确定平台的API级别< 1.6

时间:2010-07-01 04:51:59

标签: android

Build.VERSION.SDK_INT仅在API级别4(1.6)中添加。是否可以确定手机是否具有API级别3(1.5)?

4 个答案:

答案 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。