俊达
俊达
  • 发布:2019-02-18 22:58
  • 更新:2021-11-01 17:52
  • 阅读:4378

在web-view加载的第三方页面下载apk后如何自动安装

分类:uni-app

项目某个页面的web-view里加载了第三方h5页面,该页面下载按钮能够下载一个apk安装包。

该第三方h5页面在手机浏览器打开以后,下载完安装包,就自动进入安装界面了。

项目在生成离线打包资源、通过android studio打包成apk、在安卓手机上运行以后,该web-view加载的第三方h5页面,点击下载按钮,看到确实在后台开始下载apk了。但是下载完成后,什么反应都没有,不会进入自动安装界面。

请问如何在android端下载完成apk后,开始自动安装呢?

2019-02-18 22:58 负责人:无 分享
已邀请:
大熊被骗

大熊被骗

不知道这样的是否你想要的  

<template>  
    <view>  
        <web-view :src="url" @message="getMessage"></web-view>  
    </view>  
</template>  

<script>  
    var wv;//计划创建的webview  
    export default {  
       onReady() {  
          console.log('当前环境:' + uni.getSystemInfoSync().platform);//如果是安卓才执行  
          if(uni.getSystemInfoSync().platform == 'android')  
          {  
              var currentWebview = this.$mp.page.$getAppWebview() //获取当前页面的webview对象  
              setTimeout(function() {  
                wv = currentWebview.children()[0]  
                var url222 =  wv.getURL();  
                //console.log('当前网址222: '+url222);  
                // 拦截所有页面跳转,可使用参数拦截.apk的跳转  
                wv.overrideUrlLoading({mode:'reject',match:'.*\.apk.*'}, function(e){  
                    uni.showLoading({  
                        title: '下载中...',  
                        mask: false  
                    });  
                    //console.log('拦截的URL666: '+e.url);  
                    var dtask = plus.downloader.createDownload(e.url, {}, function ( d, status ) {   
                        uni.hideLoading();  
                        uni.showToast({  
                            title: '下载成功...',  
                            mask: false,  
                            duration: 1500    
                        });  
                                      // 下载完成    
                                      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    
                                           });    
                                      }      
                                  });  
                                dtask.start();  
                    });  
              }, 1000); //如果是页面初始化调用时,需要延时一下  
          }  

        },  
        data(){  
            return {  
                url:'',  
                id:'',  
                banner: {}  
            }  
        },  
        onLoad(option) {  
            // 目前在某些平台参数会被主动 decode,暂时这样处理。  
            try {  
                this.banner = JSON.parse(decodeURIComponent(option.query));  
            } catch (error) {  
                this.banner = JSON.parse(option.query);  
            }  
            this.url = this.banner;  
        },  
        methods:{  
            getMessage(event) {  
                console.log('提示内容: '+JSON.stringify(event.detail.data));  
                uni.showModal({  
                    content: JSON.stringify(event.detail.data),  
                    showCancel: false  
                });  
            }  
        }  
    }  

</script>  

<style>  

</style>  
俊达

俊达 (作者)

简单来说,安卓端app里面,通过web-view加载的第三方页面下载到的apk安装包,在下载完成后如何实现进入自动安装界面?
不然下载完后用户都找不到下载到哪里去了。

DCloud_UNI_GSQ

DCloud_UNI_GSQ

使用plus的API进行下载和安装

  • 俊达 (作者)

    web-view加载的是第三方的页面,不是我们自己项目里用uni-app开发的页面。我怎么能控制到第三方页面的行为呢?

    2019-02-19 18:19

  • DCloud_UNI_GSQ

    @417897@qq.com:那就不能控制人家了

    2019-02-21 20:48

  • 俊达 (作者)

    那这样就没法正常安装了。但是在浏览器里直接打开这个页面是能够下载并自动进入安装界面的。

    2019-02-22 01:02

  • 8***@qq.com

    有方法能获取第三方页面的下载链接吗 @DCloud_UNI_GSQ

    2019-06-28 15:04

  • 8***@qq.com

    回复 俊达: 你现在是怎么解决的啊,第三方页面里的下载该怎么用外部浏览器打开啊

    2019-06-28 15:04

俊达

俊达 (作者)

web-view加载的是第三方的页面,不是我们自己项目里用uni-app开发的页面。我怎么能控制到第三方页面的行为呢?

大熊被骗

大熊被骗

还没有解决吗,能实现不?

1***@qq.com

1***@qq.com - helloworld

666

该问题目前已经被锁定, 无法添加新回复