前言
最近写了一个uniapp
,功能大致是:扫描三方分发平台的二维码,安装app
。iOS
端直接在网页下载然后自动安装了,这个没有问题,但是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端晋消扫码
app
,app
安装链接如下:
https://www.pgyer.com/AUzb
如果链接失效的话,可以留言联系我。
Author
如果你有什么建议,可以关注我的公众号:iOS开发者进阶,直接留言,留言必回。
网友评论