Java 这个错误意味着什么?我如何消除它?

Java 这个错误意味着什么?我如何消除它?,java,android,android-2.2-froyo,android-sdk-2.3,android-sdk-2.1,Java,Android,Android 2.2 Froyo,Android Sdk 2.3,Android Sdk 2.1,我在两个不同的文件夹中安装了Android SDK,两个版本略有不同,同一个项目的两个副本都在两个文件夹中打开,即SDK1-Project1;SDK2->项目1的副本。SDK1工作正常,但SDK2显示错误 Call requires API level 13 (current min is 8): android.view.Display#getSize 排队 getWindowManager().getDefaultDisplay().getSize(p); 在MainActivi

我在两个不同的文件夹中安装了Android SDK,两个版本略有不同,同一个项目的两个副本都在两个文件夹中打开,即SDK1-Project1;SDK2->项目1的副本。SDK1工作正常,但SDK2显示错误

Call requires API level 13 (current min is 8): android.view.Display#getSize  
排队

getWindowManager().getDefaultDisplay().getSize(p);  
在MainActivity类中。我如何删除这个?
我很确定这与编译器选项或其他东西有关;SDK2建议我只在onCreate中添加@SuppressWarning,而不需要对SDK1做任何事情;简单地抑制警告就足够了,或者它以后会以意外的方式破坏我的程序吗?

此警告告诉您,应用程序可以在低于13的SDK上运行,getDefaultDisplay从API 13开始就可用,因此如果您在较低的SDK上运行它,您将得到某种ClassNotFound或MethodNotFound异常。您必须为较低的API级别管理此代码

要对此进行管理,您可以使用android.os.Build.VERSION.SDK_INT返回当前API级别并添加@SuppressWarning注释


编辑:您收到此警告的原因是您在清单中使用了比minSdkVersion更高的targetSdkVersion

错误解释您正在调用API 13之前不存在的方法或类,而您的min API为8!更改为manifest.xml中的这些行

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="13" />

你可以在你的项目中保留你的android:targetSdkVersion=13,如果它高于13,则根据错误消息将你的min sdk更改为13,如果用户使用的是蜂巢API 12或更旧版本,你的应用程序可能会中断,因为该方法在那些版本中尚不存在,它是在SDK1中无错误运行的项目的副本。为什么SDK1没有出现任何错误呢?顺便说一句,SDK1是稍旧的版本。SDK1中的android:minSdkVersion=8。为什么那里没有显示任何错误?顺便说一下,SDK1是稍旧的版本。是的,这可能是SDK1和sdk2之间的版本差异,也可能是您遗漏了一些其他细节。检查project.properties文件,让我知道你的project.properties文件是否完全相同,并且在“ed comments”下面有target=android-18,但上面Mihail的帖子似乎回答了这个问题。尽管它的名称不同,但这个元素用于指定API级别,不是SDK软件开发工具包或Android平台的版本号,所以是sdk1和SDK2之间的版本差异。正如我所说,这是一个项目的副本,在sdk1中运行没有错误。为什么SDK1没有出现任何错误呢?顺便说一句,SDK1是稍旧的版本。因为SDK变得更智能-添加了新的警告,使您更容易管理此类问题。换句话说,如果您使用较旧的SDK编译它,这并不能解决问题,您只是不了解它。这意味着,至少对于我的测试设备,SDK2的工作原理应该与SDK1相同,如果我只添加@SuppressWarnings?SDK1和SDK2将无差别地运行。警告与最终应用程序无关。它们是代码分析器的产品,可以通知您潜在的问题。