美文网首页uniapp
uniapp在web-view 中下载的app,让Android

uniapp在web-view 中下载的app,让Android

作者: __Mr_Xie__ | 来源:发表于2021-03-26 15:27 被阅读0次

前言

最近写了一个uniapp,功能大致是:扫描三方分发平台的二维码,安装appiOS端直接在网页下载然后自动安装了,这个没有问题,但是Android端,下载之后却不知道apk包到哪里了。以下代码就是让Android端下载apk包之后,直接打开apk,这就解决了下载之后却不知道apk包到哪里了的问题。

代码

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

<script>
    var wv; //计划创建的webview  
    export default {
        data() {
            return {
                url: "",
                webviewStyles: {
                    progress: {
                        color: "#FF4040"
                    }
                }
            }
        },
        methods: {
            getMessage(event) {
                console.log('提示内容: ' + JSON.stringify(event.detail.data));

                uni.showModal({
                    content: JSON.stringify(event.detail.data),
                    showCancel: false
                })
            }
        },
        onReady() {
            //如果是安卓才执行  
            console.log('当前环境:' + uni.getSystemInfoSync().platform);
            if (uni.getSystemInfoSync().platform == 'android') {
                //获取当前页面的webview对象  
                var currentWebview = this.$mp.page.$getAppWebview() 
                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); //如果是页面初始化调用时,需要延时一下  
            }
        },
        onLoad(options) {
            this.url = options.url
        }
    }
</script>

<style>

</style>

注⚠️:我的微信小程序晋消扫码已上线,由于个人类型、海外类型微信小程序不支持web-view标签,故无法跳转第三方外部链接,所以部分功能不能用,如果想看效果,可以安装Android端晋消扫码 appapp安装链接如下:
https://www.pgyer.com/AUzb
如果链接失效的话,可以留言联系我。

Author

如果你有什么建议,可以关注我的公众号:iOS开发者进阶,直接留言,留言必回。

相关文章

网友评论

    本文标题:uniapp在web-view 中下载的app,让Android

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