10

我尝试按照本教程进行操作: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's 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's an easy "First Bug" for someone if they really want to fix this.

他说修复很容易,但没有解释如何修复它 -.- 太棒了!

显然,一种解决方法是不要使用 Android 2.2 模拟器运行它,因为它适用于 Android 4.2。

但是我如何让它在 Android 2.2 中运行呢?

我想构建一个兼容 API 级别 8 及更高级别的应用程序。

4

1 回答 1

4

这是因为 Android 2.2 没有更新的带有 WebResource Response 的 webkit。

尝试从此处下载cordova 2.2 jar并将其放入项目底部的/libs 文件夹中。如果没有,则创建一个。您可能还必须将IceCreamCordovaWebViewClient.java添加到您的源代码中(或者如果您选择下载 cordova 的源代码并将其添加为依赖项,您可以将其添加到该源代码中)

或者您可以尝试使用常规WebViewClient/ChromeClient并自己完成工作,正如MH在这篇文章中概述的那样,复制如下。

如果你想对 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 内容作为字符串传入。


编辑:

此外,您还可以尝试将 WebResourceResponse 和依赖项添加到您的 src 文件夹。尝试从这里下载它们

于 2013-05-21T13:37:52.150 回答