Компиляция, зависящая от версии Android
Есть ли какая-нибудь условная компиляция для Android? Я пытаюсь использовать android.webkit.WebView.onPause(), в то же время поддерживая Android API 8.
Я пробовал решения, предложенные Фиддлером и Андреем Войтенковым при условной компиляции в 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();
}
}
... но я все еще не могу скомпилировать / запустить приложение:
"Метод onPause () не определен для типа WebView"
а также
"Ваш проект содержит ошибки, исправьте их перед запуском приложения".
Я делаю что-то не так, или это просто невозможно?
1 ответ
Ваш код выглядит хорошо, он проверяет минимальную версию SDK перед использованием функции, которая доступна только с этой версии. Поэтому, если вы запустите свое приложение на устройстве Android с версией ниже API 11, этот код не будет выполнен. Но если он запущен на устройстве Android с API 11 или выше, он будет выполнен.
Таким образом, это означает, что ваше приложение должно быть скомпилировано как минимум с API 11, потому что оно содержит функцию, которая представлена в API 11. В зависимости от версии, на которой оно запущено, эта функция будет включена или нет.
Для этого настройте свой AndroidManifest.xml:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11" />
Это создаст ваше Android-приложение на основе API 11, но все же позволяет использовать его на устройстве Android с API 8 или более поздней версии.