我有一个附加在WebView
上的WebViewClient
:
webView.setWebViewClient(new MyWebViewClient());
这是我实现的MyWebViewClient
:
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webView.loadUrl(url);
return true;
}
}
我通过 loadUrl()
给 WebView
提供一个要加载的 URL。如果页面中有一个链接 (a href...
),我的 shouldOverrideUrlLoading
方法将被调用并且我可以拦截链接的点击。
然而,如果我有一个方法为 POST
的表单,则不会调用 shouldOverrideUrlLoading
方法。
我注意到类似的问题在这里:http://code.google.com/p/android/issues/detail?id=9122 ,其中建议在我的 WebView
中重写 postUrl
方法。但是,此 API 仅从 API level 5 开始提供。
如果我使用的是 API level 4,我该怎么办?是否有其他拦截表单提交的方法?
WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request)
可以拦截POST请求。但它仍然不完美;你不能简单地设置自定义头并让请求继续——你必须全部自己处理。 - Alex Cohn