Не удалось найти класс "android.webkit.WebResourceResponse" при запуске HelloCordova на Android 2.2

Я попытался следовать этому руководству: http://docs.phonegap.com/en/2.7.0/guide_getting-started_android_index.md.html#Getting%20Started%20with%20Android

и получите следующую ошибку:

05-08 15:35:59.845: E/dalvikvm(307): Could not find class 'android.webkit.WebResourceResponse', referenced from method org.apache.cordova.CordovaWebViewClient.getWhitelistResponse

Здесь парень объясняет ошибку: https://issues.apache.org/jira/browse/CB-3041

This is a known issue. Because Android 2.3 does not have android.webkit.WebResourceResponse, this code is considered dead by Android 2.3 Dalvik. This means your whitelisting doesn't work properly like it does on Android 4.x, as per CB-2099. I'm going to keep this open, but lower the priority, since we know what causes it and it an easy "First Bug" for someone if they really want to fix this.

Он говорит, что исправление прост, но не объясняет, как его исправить. Brilliant!

Очевидно, что одно исправление не должно запускаться с эмулятором Android 2.2, поскольку оно работает с Android 4.2.

Но как мне заставить его работать в Android 2.2?

Я хочу создать приложение, совместимое с уровнем API 8 и выше.

Ответ 1

Это связано с тем, что Android 2.2 не имеет обновленного webkit с ответом WebResource.

Попробуйте загрузить кордову 2.2 jar из здесь и поместив ее в папку you/libs в базе вашего проекта. Если их нет, создайте их. Возможно, вам также придется добавить IceCreamCordovaWebViewClient.java в свои источники (или если вы решите загрузить исходный код кордовы и добавить его как зависимость, вы можете добавить его в этот источник)

Или вы можете попробовать использовать обычный WebViewClient/ChromeClient и выполнять свою работу самостоятельно, поскольку MH очерчивает в этом post, скопировано ниже.

Если вы хотите сделать что-то подобное для Android 2.x, вы можете захотеть попробуйте использовать ранее упомянутый shouldOverrideUrlLoading(WebView view, String url), чтобы избежать загрузки страницы, извлеките ее вручную, замените ссылку на файл css своим собственным и, наконец, вызовите loadData(String data, String mimeType, String encoding) (или loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl)) в WebView, передавая управляемое содержимое html как строка.


EDIT:

Кроме того, вы также можете попробовать добавить WebResourceResponse и зависимости в свою папку src. Попробуйте загрузить их из здесь