【发布时间】:2011-04-09 12:44:12
【问题描述】:
我有一个WebViewClient 附加到我的WebView,如下所示:
webView.setWebViewClient(new MyWebViewClient());
这是我对MyWebViewClient的实现:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return true;
}
}
我给WebView 一个URL 以通过loadUrl() 加载。如果页面中有链接(a href...),我的shouldOverrideUrlLoading方法被调用,我可以拦截链接点击。
但是,如果我有一个方法为POST 的表单,则不会调用shouldOverrideUrlLoading 方法。
我在这里注意到一个类似的问题:http://code.google.com/p/android/issues/detail?id=9122 这似乎建议在我的WebView 中覆盖postUrl。但是,此 API 仅从 API 级别 5 开始可用。
如果我处于 API 级别 4,我该怎么办?有没有其他方法可以拦截表单帖子?
【问题讨论】:
-
您可以尝试在 WebViewClient 中覆盖 onPageStarted 回调。
-
谢谢。我试过了,它工作正常,但问题是我不想加载表单的页面 - 这是一个虚假的 URL,所以我最终得到了 webview 错误页面。如果 URL 与我的表单 URL 匹配,我通过检查 onPageStarted 来解决此问题,如果是,则在我的应用程序中处理此问题,然后告诉 webViewClient 返回。这听起来合理吗?
-
您找到解决方案了吗?
-
这些天,我们有
WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)可以拦截 POST。它仍然不够完美。您不能简单地设置自定义标头并让请求继续 - 您必须 handle it all yourslef
标签: android forms post webviewclient