Android有任何类型的条件编译吗?我正在尝试使用android.webkit.WebView.onPause(),同时还支持Android API 8.
我尝试了Fiddler和Andrey Voitenkov在Conditional compiling in Android?建议的解决方案:
public void pause()
{
int version = android.os.Build.VERSION.SDK_INT;
if(version >= 11)
{
webViewOnPause(_webView);
}
super.onPause();
}
@TargetApi(11)
void webViewOnPause(final android.webkit.WebView webview)
{
new Runnable() {
public void run() {
new PauseStuffAvailableOnHC(webview);
}
}.run();
}
class PauseStuffAvailableOnHC
{
@TargetApi(11)
public PauseStuffAvailableOnHC(android.webkit.WebView webview)
{
webview.onPause();
}
}
...但我仍然无法编译/运行应用程序:
“对于WebView”
类型,未定义onPause()方法和
“您的项目包含错误,请在运行您的应用程序之前修复它们。”
我做错了什么,或者根本不可能做到这一点?
答案 0 :(得分:1)
您的代码看起来很好,它会在使用仅在该版本上提供的功能之前检查最小的SDK版本。 因此,如果您在版本低于API 11的Android设备上运行应用程序,则不会执行该代码。 但如果它在具有API 11或更高版本的Android设备上运行,则会执行它。
这意味着,您的应用程序应该至少针对API 11进行编译,因为它包含API 11中引入的功能。根据运行的版本,该功能是否启用。
要执行此操作,请调整 AndroidManifest.xml :
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" />
这将针对API 11构建您的Android应用,但仍允许它在运行API 8或更高版本的Android设备上使用。