let wv; //计划创建的webview
let wLoading;//计划创建loading

this.url = params.url || '';
console.log('当前环境:' + uni.getSystemInfoSync().platform); //如果是安卓才执行
if (uni.getSystemInfoSync().platform == 'android') {
            let currentWebview = this.$mp.page.$getAppWebview(); //获取当前页面的webview对象
            let _this = this;
            setTimeout(function() {
                wv = currentWebview.children()[0];
                let url222 = wv.getURL();
                //console.log('当前网址222: '+url222);
                // 拦截所有页面跳转,可使用参数拦截.apk的跳转
                wv.overrideUrlLoading({ mode: 'reject', match: '.*\.apk.*' }, function(e) {
                    wLoading = plus.nativeUI.showWaiting("   开始下载...   ");  
                    console.log('拦截的URL666: '+e.url);
                    _this.dtask = plus.downloader.createDownload(e.url, {}, function(d, status) {
                        wLoading.setTitle("   下载成功   ");
                        // 下载完成
                        if (status == 200) {
                            plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function(error) {
                                uni.showToast({
                                    title: '安装失败',
                                    mask: false,
                                    duration: 1500
                                });
                            });
                        } else {
                            uni.showToast({
                                title: '下载失败,请检查您的网络',
                                mask: false,
                                duration: 1500
                            });
                        }
                    });
                    _this.dtask.addEventListener('statechanged', task => {
                        if (!_this.dtask) {
                            return;
                        }
                        switch (task.state) {
                            case 1:
                                console.log('开始下载');
                                break;
                            case 2:
                                console.log('链接到服务器...');
                                break;
                            case 3:
                                let progressVal = 0; 
                                progressVal = Math.ceil(task.downloadedSize / task.totalSize * 100);
                                wLoading.setTitle("   已下载"+progressVal+"%   ");    
                                console.log("   已下载"+progressVal+"%   ");
                                break;
                            case 4:
                                cnosole.log('监听下载完成');
                                wLoading.close(); 
                                break;
                        }
                    });
                    _this.dtask.start();
                });
            }, 1000); //如果是页面初始化调用时,需要延时一下
        }

uniapp安卓app里拦截webview下载apk,显示下载进度相关推荐

  1. uniapp 安卓APP应用宝整改问题记录

    uniapp 安卓APP应用宝整改问题记录 1.官方整改建议 应用宝官方指导 接到应用宝邮件,说未经同意,获取了信息,内容如下: 首页是这样的: 2.uniapp官方方案 uniapp官方方案 看指导 ...

  2. 【uniapp】uniapp安卓APP在线自动升级功能

    纯前端实现uniapp写的安卓APP跟IOS在线自动升级功能 关于Uniapp自动升级用到的阿里云要收费的问题 使用的UI框架为UVIEW2.0 用到的请求等 总结下思路 就是通过获取XML文件返回来 ...

  3. 保姆级 uni-app 安卓APP上线步骤

    第一步 点击发行-原生APP-云打包 包名:uni.UNIB43C45F 包名要跟manifest.json文件 获取的名称一至 第二步 确保manifest.json文件-源码视图 包名没有改可以跳 ...

  4. android服务下载apk,android下载apk并安装

    1.设置权限 2.业务代码 package com.example.esri.app04.network; import android.app.ProgressDialog; import andr ...

  5. uniapp 安卓app 实现app加固(360加固)

    首先了解一下为什么要进行加固? 移动应用中储存着不少数据,为保障APP的安全,除了定期对其进行安全检测外,还做好安全加固工作,防止二次打包.防止篡改.防止被破解等等,提前进行加密加固工作,保障开发者和 ...

  6. 网页转安卓App工具 在线云打包apk

    在线云打包apk网址: http://ikaiwei.com:8889/ctrljs 实现这个功能其实比较简单,建立服务器,把安卓web插件的代码放到服务器上,工程中替换图标,名称即可. 网址注册登录 ...

  7. php 自动下载apk,Android 下载apk 自动 安装

    Android N 后,由于不能访问私有路径,需要设置成共享文件 /** * android N 执行此安装方法 * * @param context 上下文 * @param file 文件路径 * ...

  8. Android webview video不显示下载

    加入video标签 <video width="100%" height="auto" src="' + url + '" contr ...

  9. 百度网盘svip下载时显示下载请求中无下载速度

    可以先全部暂停再全部开始 退出,重启网盘 弹出警示不用管,重启后可以继续之前的下载任务

  10. 安卓手机升级系统webview

    今天公司有台android 5.1的的设备,其系统webview版本太低(39.0),给我手动升级了一下webview,顺便总结一下 一.前言 从Android4.4系统开始,Chromium内核取代 ...

最新文章

  1. python简单代码加法-CPython 源码中整数加法的实现
  2. matlab 小波滤波器系数导出函数,小波基函数和滤波系数.ppt
  3. oracle中extents存在的理由
  4. python基础之运算符
  5. python的map怎么用_python中的map怎么使用
  6. java native方法
  7. 深度学习之卷积神经网络CNN
  8. python如何复制文件?
  9. echarts中国地图3D各个城市标点demo
  10. Linux樹目錄詳解
  11. 常见的几种网络故障案例分析与解决
  12. 【渝粤教育】国家开放大学2018年秋季 0689-21T老年心理健康 参考试题
  13. python识别图片文字_python实现简单图片文字识别翻译OCR
  14. Spring整合mybatis事务管理
  15. 电脑上查看自己连接的WIFI密码
  16. python关键词采集_Python多线程采集百度相关搜索关键词
  17. usart hmi(串口屏)介绍
  18. 怎样一次性删掉word或wps文档里的空格行
  19. 安装anaconda和tensorflow
  20. centos7 安装jdk1.8 并配置环境变量

热门文章

  1. 高淇python怎么样_跟着高淇学Python——第一到第三章总结
  2. win10文件夹加密_如何使用电脑(win10)局域网共享文件给nPlayer(SMB)
  3. Python常用模块之 json模块
  4. 多功能随身工具箱APP源码+随身助手后台php源码
  5. 省市县联动列表html代码,若依添加省市县联动三级菜单
  6. 加速打开win10自带图片查看器
  7. 把视频转换成图片帧的代码
  8. windows——win10如何远程控制另一台电脑
  9. 插值法综合实例用matlab解决,matlab 插值法
  10. CASS11.0.0.6安装以及教程