在运行Android 2.3.5的HTC Evo上,永远不会调用覆盖shouldOverrideUrlLoading()
。完全相同的代码在运行Android 2.3.6的三星Galaxy上运行良好。
到目前为止,我已尝试覆盖onPageStarted()
和onPageFinished()
。我没有在这些方法中看到URL。
我的目的是为页面中显示的mailto:
和tel:
个链接提供自定义活动。如果shouldOverrideUrlLoading()
永远不会被击中,我对如何使这项工作有任何想法?
我已经在stackoverflow和其他地方查看了类似的问题,但没有发现任何相关内容。
答案 0 :(得分:4)
shouldOverrideUrlLoading()
不仅适用于某些Android版本,例如2.1或2.3.6,但它在2.3.3,2.3.5,4.0.2或4.0.3上运行良好。
如果您需要处理点击webview上的链接,则必须使用shouldOverrideUrlLoading()
方法。如果您只需要处理加载网页,则应使用onPageStarted()
。
这是android开发人员链接:https://developer.android.com/guide/webapps/migrating.html
注意:例如:我们在网页上有2个链接。
<a href="http://www.w3schools.com/">Visit W3Schools!</a>
<a href="http://www.w3schools.com/" target="_blank">Visit W3Schools!</a>
shouldOverrideUrlLoading()
”时,才会调用 1
。
当用户点击链接“2
”
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (url.contains("success")) {
Intent intent = new Intent(WebviewActivity.this, OrderConfirmActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
} else {
super.onPageStarted(view, url, favicon);
}
}