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

时间:2015-10-10 00:21:59

标签: android android-intent webview

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

  

在Android 5.1.1上进行测试

document.location = "index.html";

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

file:///android_asset/index.html

4 个答案:

答案 0 :(得分:41)

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

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

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

答案 1 :(得分:6)

这对我有用:

webView.setWebViewClient(new WebViewClient());

答案 2 :(得分:0)

这里几乎没有问题。

  1. 从最新的机器人,WebView和Chrome客户端是独立的应用程序,可以在没有用户意图的情况下自动更新。

  2. 从Chrome x> = 25版本,他们更改了加载网址在使用webview组件的Android应用程序中的工作方式。 https://developer.chrome.com/multidevice/android/intents看起来他们在没有用户手势的情况下阻止更改网址并从JavaScript计时器启动

  3. 这里的解决方案是强制用户激活URL更改,例如点击按钮。

    此外,您可以覆盖上面提到的方法" shouldOverrideUrlLoading"在WebView客户端。

答案 3 :(得分:-1)

作为替代,我想是将每个按钮单击事件触发动作添加到JavascriptInterface的addJavascriptInterface

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;
    }
}

可能不是一个好方法,但至少它的工作:-) 感谢