为什么我的android API检查不起作用?

时间:2014-11-30 13:57:14

标签: android backwards-compatibility

基本上,这就是我正在做的事情:

if (Integer.valueOf(Build.VERSION.SDK) >= 9) {
    editor.apply();
} else {
    editor.commit();
}

但为什么它只适用于API 7或更高版本?我的应用已宣布支持最低API 3,但在使用java.lang.VerifyError加载时崩溃,说明无法找到apply()方法。

  

此方法仅适用于Android 2.1(API级别7)及更高版本。如果您支持1.6(API级别4),则editor.apply()调用必须包装在静态类中。目前,很少有应用程序必须支持旧版本的Android,因此我不会为此提供示例。

(参考:http://simonvt.net/2012/02/07/what-api-level-should-i-target/

在这种情况下,我的应用程序是否应该完全取消对API 3的支持?

2 个答案:

答案 0 :(得分:1)

  

在这种情况下,我的应用程序是否应该完全取消对API 3的支持?

您至少应该放弃对API Level 3和4的支持,因为这样可以大大简化您的代码,而且现在大约有零人使用这些设备。使用Android 2.0(API Level 5),这样的事情的向后兼容性变得更加简单,因为不再需要你引用的内容。

然后,请勿使用Build.VERSION.SDK,更不用说将其自行转换为Integer。引用the documentation

  

此级别在API级别4中已弃用。使用SDK_INT可以轻松将其作为整数。

答案 1 :(得分:0)

您可以安全地将你的minSdk设置为9.然后你会覆盖大部分设备(超过99%)并且在保持兼容性方面省去了很多麻烦。

如果您选择仅定位80%的设备API 16是一个安全且更舒适的选择。

来源:https://developer.android.com/about/dashboards/index.html