Android webview捕获链接点击
我正在开发的应用程序有一个webview,我需要捕获webview请求单击事件(例如:单击链接、单击按钮、单击youtube视频播放按钮,如…)使用此代码这对我有用Android webview捕获链接点击,android,Android,我正在开发的应用程序有一个webview,我需要捕获webview请求单击事件(例如:单击链接、单击按钮、单击youtube视频播放按钮,如…)使用此代码这对我有用 webview.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url)
webview.setWebViewClient(new WebViewClient()
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return true;
}
});
这是可以做到的
您必须为您的WebView设置WebViewClient
。这就是如何做到这一点
WebView webView;//make sure to initialize
webView.setWebViewClient(webViewClient);
WebViewClient webViewClient= new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url){
return true;
}
@Override
public void onLoadResource(WebView view, String url){
if( url.equals("http://yoururl.com") ){
// do something
}
}
}
您可以这样做:
WebView myWebView = (WebView) findViewById(R.id.yourWebView);
myWebView.setWebViewClient(new MyWebViewClient());
myWebView.loadUrl("yourLink");
但别忘了创建WebViewClient:
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return true;
}
}
处理应用程序中的链接时,WebViewClient回调(如shouldOverrideUrlLoading和doUpdateVisitedHistory)可能不会显示一致或正确的值。在这种情况下,@android.webkit.JavascriptInterface是您的朋友。其想法是编写javascript点击处理程序(在内容中),通过JavascriptInterface方法将信息传递给应用程序 下面是一个javascript示例,用于在内部跳转到#-锚点的源位置捕获滚动条。一旦进入doUpdateVisitedHistory,获得此信息通常为时已晚
if (typeof AndroidCode != "undefined") {
var coll = document.getElementsByTagName("a");
for (let i = 0; i < coll.length; i++) {
var href = coll[i].getAttribute("href");
if (href.indexOf("#") >= 0) {
coll[i].addEventListener("click", function() {
AndroidCode.reportInternalJump();
});
}
}
}
在我的情况下,这没有抓住事件。对xml部分有什么要求吗?@Virthus安卓webview完全是有缺陷和无用的。代码段现在可以工作,但一分钟后就不工作了。我不知道它想要什么。
if (typeof AndroidCode != "undefined") {
AndroidCode.setLoadedStatus(false);
window.onload = function () {
AndroidCode.setLoadedStatus(true);
}
}