master
parent
cb409b86f8
commit
944ddf8d66
@ -0,0 +1,93 @@ |
||||
/** |
||||
* @description H5+下载App |
||||
* @param downloadUrl:App下载链接 |
||||
* @param progressCallBack:下载进度回调 |
||||
*/ |
||||
export const downloadApp = (downloadUrl, progressCallBack = () => {}, ) => { |
||||
return new Promise((resolve, reject) => { |
||||
//创建下载任务
|
||||
const downloadTask = plus.downloader.createDownload(downloadUrl, { |
||||
method: "GET" |
||||
}, (task, status) => { |
||||
console.log(status, 'status') |
||||
if (status == 200) { //下载成功
|
||||
resolve(task.filename) |
||||
|
||||
} else { |
||||
reject('fail') |
||||
uni.showToast({ |
||||
title: '下载失败', |
||||
duration: 1500, |
||||
icon: "none" |
||||
}); |
||||
} |
||||
}) |
||||
//监听下载过程
|
||||
downloadTask.addEventListener("statechanged", (task, status) => { |
||||
switch (task.state) { |
||||
case 1: // 开始
|
||||
break; |
||||
case 2: //已连接到服务器
|
||||
break; |
||||
case 3: // 已接收到数据
|
||||
let hasProgress = task.totalSize && task.totalSize > 0 //是否能获取到App大小
|
||||
if (hasProgress) { |
||||
let current = parseInt(100 * task.downloadedSize / task |
||||
.totalSize); //获取下载进度百分比
|
||||
progressCallBack(current) |
||||
} |
||||
break; |
||||
case 4: // 下载完成
|
||||
break; |
||||
} |
||||
}); |
||||
//开始执行下载
|
||||
downloadTask.start(); |
||||
}) |
||||
|
||||
|
||||
} |
||||
/** |
||||
* @description H5+安装APP |
||||
* @param fileName:app文件名 |
||||
* @param callBack:安装成功回调 |
||||
*/ |
||||
export const installApp = (fileName, callBack = () => {}) => { |
||||
//注册广播监听app安装情况
|
||||
onInstallListening(callBack); |
||||
//开始安装
|
||||
plus.runtime.install(plus.io.convertLocalFileSystemURL(fileName), {}, () => { |
||||
//成功跳转到安装界面
|
||||
}, function(error) { |
||||
console.log(error) |
||||
uni.showToast({ |
||||
title: '安装失败', |
||||
duration: 1500, |
||||
icon: "none" |
||||
}); |
||||
}) |
||||
|
||||
} |
||||
/** |
||||
* @description 注册广播监听APP是否安装成功 |
||||
* @param callBack:安装成功回调函数 |
||||
*/ |
||||
const onInstallListening = (callBack = () => {}) => { |
||||
|
||||
let mainActivity = plus.android.runtimeMainActivity(); //获取activity
|
||||
//生成广播接收器
|
||||
let receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', { |
||||
onReceive: (context, intent) => { //接收广播回调
|
||||
plus.android.importClass(intent); |
||||
mainActivity.unregisterReceiver(receiver); //取消监听
|
||||
callBack() |
||||
} |
||||
}); |
||||
let IntentFilter = plus.android.importClass('android.content.IntentFilter'); |
||||
let Intent = plus.android.importClass('android.content.Intent'); |
||||
let filter = new IntentFilter(); |
||||
filter.addAction(Intent.ACTION_PACKAGE_ADDED); //监听APP安装
|
||||
filter.addDataScheme("package"); |
||||
mainActivity.registerReceiver(receiver, filter); //注册广播
|
||||
|
||||
} |
||||
|
After Width: | Height: | Size: 3.0 KiB |
Loading…
Reference in new issue