效果图
仅安卓
前言
1.plus.runtime.install一直fail(20240808), uni.openDocument可以打开本地apk文件
2.权限问题需小心
跑通前提
1.先确定apk地址有效,浏览器中手动下载可安装
2.确保已添加离线打包AndroidStudio的“android.permission.INSTALL_PACKAGES”权限
参考https://uniapp.dcloud.net.cn/tutorial/app-permission-android.html
3.
核心代码
const downloadTask = uni.downloadFile({
url: 'https://xxxx/demo.apk',
success: (res) => {
if (res.statusCode === 200) {
runApk(res.tempFilePath)
}
}
})
downloadTask.onProgressUpdate((res) => {
// 总大小 - 字节
// res.totalBytesExpectedToWrite
// 已下载 - 字节
// res.totalBytesWritten
// 进度 - 百分比 0-100
// res.progress
})
const runApk = (local_path = '') => {
uni.openDocument({
filePath: local_path,
showMenu: true,
success: (res) =>{
// 打开成功
},
fail: (e) =>{
// 打开失败
},
})
}
题外话
1.plus.io.convertLocalFileSystemURL( uni.downloadFile结果.tempFilePath )获取绝对路径,
在uni.openDocument中无效 - 不执行也不报错
2.plus.io.LocalURL(*) 什么参数都不执行,也不报错
3.uniapp打包后图片偶尔缺失 - 因为电脑可用内存不够,项目编译不够内存空间,造成偶尔的static资源没法完整打包进去
plus.runtime.install 安装失败,并且失败回调的参数 error一直为null
https://ask.dcloud.net.cn/question/57909
https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.install
https://blog.csdn.net/lzz123987csdn/article/details/136730680
加了离线打包的权限也不行 <uses-permission android:name="android.permission.INSTALL_PACKAGES" />
https://uniapp.dcloud.net.cn/tutorial/app-permission-android.html
// 获取应用信息 - uniapp获取manifest文件内容
// https://www.html5plus.org/doc/zh_cn/runtime.html#plus.runtime.getProperty
const getAppInfo = async () => {
// APP更新检查 > 获取应用信息
return new Promise((resolve, reject) => {
plus.runtime.getProperty( plus.runtime.appid, ( wgtinfo ) => {
resolve(wgtinfo)
})
})
}
/**
* APP-PLUS下载地址
*
* 处理:uni.downloadFile 》 success 》 res.tempFilePath
* 获得:_doc/uniapp_temp_172308307703610/download/expert-v1.0.2.apk
*
* 处理:plus.io.convertLocalFileSystemURL(res.tempFilePath)
* 获得:/storage/emulated/0/Android/data/com.amd.expert/apps/__UNI__78B9194/doc/uniapp_temp_172308307703610/download/expert-v1.0.2.apk
* 参考:https://www.html5plus.org/doc/zh_cn/io.html#plus.io.convertLocalFileSystemURL
*
* 处理:plus.io.LocalURL( convertLocalFileSystemURL结果 )
* 获得:file:///storage/emulated/0/Android/data/com.amd.expert/apps/__UNI__78B9194/doc/uniapp_temp_172308307703610/download/expert-v1.0.2.apk
* 参考:https://www.html5plus.org/doc/zh_cn/io.html#plus.io.LocalURL
*/
推荐
baidu.rudon.cn 没有广告的百度首页