【问题标题】:Denied starting an intent without a user gesture Webview Android拒绝在没有用户手势的情况下启动意图 Webview Android
【发布时间】:2015-10-10 00:21:58
【问题描述】:

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

在安卓 5.1.1 上测试

document.location = "index.html";

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

file:///android_asset/index.html

【问题讨论】:

    标签: android android-intent webview


    【解决方案1】:

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

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

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

    【讨论】:

    • 像魅力一样工作,谢谢
    • 工作! @Abdullah 如果这对你有用,请接受这个答案。
    • WebViewClient 的默认实现包括默认返回 false。检查documentation
    • stackoverflow.com/a/38454860/9260060 可能是你 2021 年所需要的
    【解决方案2】:

    这对我有用:

    webView.setWebViewClient(new WebViewClient());
    

    【讨论】:

    • 科特林:webView.webViewClient = WebViewClient()
    【解决方案3】:

    这里的问题很少。

    1. 从最新的 android 中,WebView 和 Chrome 客户端是分离的应用程序,可以在用户不知情的情况下自动更新。

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

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

    另外,您可以在 WebView 客户端中覆盖上述“shouldOverrideUrlLoading”方法。

    【讨论】:

      【解决方案4】:

      作为替代,我想将 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;
          }
      }
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-12
        • 1970-01-01
        • 2013-11-18
        • 1970-01-01
        • 2017-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多