Android: overriding shouldOverrideUrlLoading not working on HTC devices
在运行Android 2.3.5的HTC Evo上,永远不会调用重写的shouldOverrideUrlLoading()。完全相同的代码在运行Android 2.3.6的Samsung Galaxy上效果很好。
到目前为止,我已经尝试覆盖onPageStarted()和onPageFinished()。在这些方法中看不到URL。
我的目的是为页面中存在的mailto:和tel:链接提供自定义活动。如果永不命中shouldOverrideUrlLoading(),如何使此工作有效的任何想法?
我已经在stackoverflow和其他地方查看过类似的问题,没有发现任何相关内容。
- [摘自](stackoverflow.com/questions/9670136/…)。问题似乎是js函数setTimeout(fn,millis)。您已经编写了一个覆盖它的js函数,然后在Android代码中(使用JavascriptInterface)重新创建了该函数的行为,因为它最适合您的应用。取决于您的应用程序功能,这需要做很多工作,但是确实可行。这个想法是重写setTimeout,然后从android代码中调用一个方法,该方法在js的setTimeout初始调用中使线程hibernate多少毫秒。
-
谢谢你的评论。我会尝试的。但是Javascript可能不是可接受的解决方案。我也在看stackoverflow.com/questions/5116909/…
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个链接。
-
Visit W3Schools!
-
Visit W3Schools!
shouldOverrideUrlLoading()仅在用户单击链接" 1"时调用。
用户单击链接" 2"
时不会调用它
1 2 3 4 5 6 7 8 9 10
| 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);
}
} |
- 我不明白`if(url.contains(" success"))`的工作原理。你能解释一下吗?