拒绝在没有用户手势的情况下启动意图Webview Android

拒绝在没有用户手势的情况下启动意图Webview Android,android,android-intent,webview,Android,Android Intent,Webview,尝试使用Javascript重定向在android webview中重定向本地html页面时,在Logcat中启动意图被拒绝: android 5.1.1上的测试 document.location=“index.html” 拒绝在没有用户手势的情况下启动意图,URI: file:///android_asset/index.html作为替代方案,我发现应该将addJavascriptInterface每个按钮单击事件触发操作添加到JavascriptInterface webView.addJ

尝试使用Javascript重定向在android webview中重定向本地html页面时,在Logcat中启动意图被拒绝:

android 5.1.1上的测试

document.location=“index.html”

拒绝在没有用户手势的情况下启动意图,URI:


file:///android_asset/index.html

作为替代方案,我发现应该将addJavascriptInterface每个按钮单击事件触发操作添加到JavascriptInterface

webView.addJavascriptInterface(new java2JSAgent(), "java2JSAgentVar"); //webView webview object 

public class java2JSAgent
{
    @JavascriptInterface
    public String getContacts()
    {
        String jsonResponse = "{result:'redirected'}";
        runOnUiThread(new Runnable() {

            @Override
            public void run() {
                webView.loadUrl("file:///android_asset/index.html");
            }
        });
        return jsonResponse;
    }
}
可能不是一个好方法,但至少它是有效的:-)
谢谢

我在1000次尝试Android.developer中阅读了文档,这就是我的解决方案

我不知道你是否明白,我说西班牙语

webView.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        return false;                
    }
});

这里没有什么问题

  • 从最新的androids,WebView和Chrome客户端是分开的应用程序,可以自动更新,而无需用户的意图

  • 从Chrome x>=25版本开始,他们改变了加载url在使用webview组件的android应用程序中的工作方式。看起来他们正在阻止更改url,而没有用户手势,并且是从JavaScript计时器启动的

  • 这里的解决方案是强制用户激活URL更改,例如单击按钮

    此外,您还可以在WebView客户端中重写上面提到的“shouldOverrideUrlLoading”方法。

    这对我很有用:

    webView.setWebViewClient(new WebViewClient());
    

    很有魅力,谢谢你@Abdullah如果这对您有效,请接受此答案。默认情况下,WebViewClient的默认实现包括返回false。Check.Kotlin:
    webView.webViewClient=webViewClient()