我正在编写Android应用程序。我的应用程序必须在Android 2.2和Android 4.0.3下启动,并且我想在Android中使用诸如#ifdef之类的东西,但我仍然找不到解决方法。
Android 4.0.3
if( android.os.Build.VERSION.SDK == 4.0.3)
{
String str = "foo";
boolean b = str.isEmpty();
}
Android 2.2
else {
String str = "foo";
boolean b = str.length() == 0;
}
我无法编写这样的代码,因为编译器会给出错误。
您可以建议我做什么?
您可以建议我做什么?
[Java新手在开始Android开发之前应该花时间学习Java。 4.0.3
在Java中不是有效的整数。
相反,您应该使用:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
// do something
}
#ifdef
用于编译时处理,即使那是Java公认的惯例(不是,但是,确实存在支持该概念的第三方工具),但它可能对您没有帮助,因为您需要决定运行环境(除非要生成多个程序包?)。
正如提供的链接fabricemarcelin(http://stackoverflow.com/questions/3506792/android-api-version-以编程方式提供的状态)所述,您可以轻松地确定运行时系统的版本。您需要将应用程序编写为在运行时会存在的API(2.2系统,如果这是您的下限),并且需要就调用4.0函数做出运行时决策。对于4.0功能,您可能需要使用反射来查找API。
我已经利用反射来访问事物,否则它们只能在较新的Android系统上使用,并且运行良好。不过,有一个秘诀是,如果合理的话,安排在应用程序中尽早执行反射/ API位置,否则,至少安排每个调用仅执行一次。
您可以简单地检查Api Level并调用Build.VERSION.SDK_INT