在我的应用程序中,shouldOverrideUrlLoading () 在 4.0.3 版本上没有被调用。我已经在 2.2 和 4.0.1 上对其进行了测试,它们都运行良好。设备名称是HTC verizon。
我的目的是为页面中的 mailto: 和 tel: 链接提供自定义活动。如果 shouldOverrideUrlLoading() 从未被击中,关于如何完成这项工作的任何想法?
请建议
在我的应用程序中,shouldOverrideUrlLoading () 在 4.0.3 版本上没有被调用。我已经在 2.2 和 4.0.1 上对其进行了测试,它们都运行良好。设备名称是HTC verizon。
我的目的是为页面中的 mailto: 和 tel: 链接提供自定义活动。如果 shouldOverrideUrlLoading() 从未被击中,关于如何完成这项工作的任何想法?
请建议
自动解释方法,您也应该覆盖 onPageStarted:
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
// 11 = Build.VERSION_CODES.HONEYCOMB (Android 3.0)
if (Build.VERSION.SDK_INT < 11) {
// According to this page:
//
// http://www.catchingtales.com/android-webview-shouldoverrideurlloading-and-redirect/416/
//
// shouldOverrideUrlLoading() is not called for redirects on
// Android earlier than 3.0, so call the method manually.
//
// The implementation of shouldOverrideUrlLoading() returns
// true only when the URL starts with the callback URL and
// dummyCallbackUrl is true.
if (shouldOverrideUrlLoading(view, url)) {
view.stopLoading();
}
}
}
改用以下方法 shouldOverrideUrlLoading()
private static WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
webView = (WebView) findViewById(R.id.web);
webView.setWebViewClient(new webviewclient());
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl("http://www.google.com");
}
public class webviewclient extends WebViewClient{
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
view.loadUrl(request.toString());
return true;
}