如果我正确地读你的问题,那么这将允许在设备上安装了7级
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="12" />
对于开发应用程序,你可以将其设置为你想要,即你的项目目标可以是任何目标SDK 4.0,但你的清单目标可以是1.5(android:targetSdkVersion =“3”),反之亦然。 Eclipse会给你一个警告,但你可以为任何目标进行开发,并且只要你考虑到后果就可以将其展现给任何目标。
您可能已经意识到在代码中有一些工作要做,以确保应用程序在尝试调用7级中不存在的方法时不会崩溃。我编写了代码来处理如果你想要一些例子。
编辑:
一个适用于我的例子。
/**
* Get the current SDK version as an integer. If we are using 1.5 the SDK is
* returned as a String so using the Build.VERSION.SDK_INT method will cause
* the application to crash. This method will return 3 if the version is 1.5
* and will return the proper result for Build.VERSION.SDK_INT if that
* method is available.
*
* @return
*/
public static int getSdkInt() {
if (Build.VERSION.RELEASE.startsWith("1.5"))
return 3;
try {
return YourInternalClass.getSdkIntInternal();
} catch (VerifyError e) {
Log.e(TAG, e.toString());
return 3;
}
}
你应该叫,可能无法在内部类存在的任何方法,所以它不会加载,直到该方法被调用。
private static class YourInternalClass {
private static int getSdkIntInternal() {
return Build.VERSION.SDK_INT;
}
}
现在您可以检查SDK版本。如果您只有在大于7的包中存在任何方法,请将这些方法放在内部类中。那么你可以做
if(TheClassYouPutThisMethodIn.getSDKInt() >= 12)
YourInternalClass.yourLevel12Method();
我敢肯定,有可能是一个更好的方式来做到这一点(我希望有人能够将它张贴),但它为我的伟大工程。我有的应用程序使用SDK 13中的方法在具有级别3的手机上安全地运行。
希望这会有所帮助。
谢谢 - 我会试试这个。我期望在我的情况下,检查是非常简单的,因为取决于水平,我只会停用/激活一个功能。但是如果你有一些可以提供帮助的代码示例,请尽可能地发布并发布它们。 – user387184 2011-12-17 22:58:27