美文网首页Android
Android WebView对a标签的意图拦截并响应下载

Android WebView对a标签的意图拦截并响应下载

作者: 漆先生 | 来源:发表于2021-11-27 10:13 被阅读0次

    接入的第三方网页需要实现下载的功能,前端同事不能直接介入修改,调用原生提供的下载接口。可以通过在网页加载结束,通过js代码修改a标签,加上拦截标识,点击相应事件拦截执行。

    一、js代码修改a标签

    实现WebViewClient的onPageFinished时,加载以下js代码拦截修改a标签

    webView.loadUrl("javascript: var allLinks = document.getElementsByTagName('a'); if (allLinks) {var i;for (i=0; i<allLinks.length; i++) {var link = allLinks[i];var target = link.getAttribute('target'); if (target && target == '_blank') {link.href = 'newtab:'+link.href;link.setAttribute('target','_self');}}}");
    

    二、拦截带标识的a标签

    实现WebViewClient的shouldOverrideUrlLoading时,拦截带标识的A标签

    if (url.startsWith("newtab:")) {
      //执行操作
       return true;
    } else {
      //正常加载其它的标签
       return false;
    }
    

    三、下载

    正在赶项目进度,采用的是直接用系统游览器下载的方案,可以用DownloadManager实现下载,还能用各自项目的网络框架进行下载

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.addCategory(Intent.CATEGORY_BROWSABLE);
    intent.setData(Uri.parse(url.replace("newtab:", "")));
    startActivity(intent);
    

    相关文章

      网友评论

        本文标题:Android WebView对a标签的意图拦截并响应下载

        本文链接:https://www.haomeiwen.com/subject/semfxrtx.html