uni-app 使用plus.runtime.install无法拉起安装更新

uni-app 使用plus.runtime.install无法拉起安装更新

开发环境 版本号 项目创建方式
HBuilderX 3.99 云端

产品分类:HTML5+

手机系统:Android

手机系统版本号:Android 8.1

手机厂商:魅族

手机机型:16th

打包方式:云端

示例代码:

var downloadTask = plus.downloader.createDownload(url, { filename: path }, function(d, status){ if(status == 200){ _this.hasProgress = false plus.runtime.install(d.filename, {force: true}, function(success) { uni.showToast({ title: ‘安装成功’, mask: false, duration: 1500 }); }, function(error) { uni.showToast({ title: ‘安装失败-01’, mask: false, duration: 1500 }); }) } }, () => { console.log(‘下载失败’); }) downloadTask.start()



var prg = 0;  
downloadTask.addEventListener('statechanged', (task, status) => {  
    switch (task.state) {  
        case 1:  
            console.log('正在下载')  
            break;  
        case 2:  
            console.log("已连接到服务器");  
            break;  
        case 3:  
            prg = parseInt((parseFloat(task.downloadedSize) / parseFloat(task.totalSize)) * 100);  
            _this.hasProgress = true  
            _this.currentPercent = prg        
            break;  
        case 4:  
            //下载完成  
            break;  
    }  
}, false)

操作步骤:

app内下载更新版本文件,下载成功后拉起手机应用更新界面进行更新


预期结果:


版本更新

实际结果:

无法拉起更新界面


bug描述:


使用plus.downloader.createDownload下载更新文件后,使用plus.runtime.install安装更新一直不成功,拉不起安装界面

更多关于uni-app 使用plus.runtime.install无法拉起安装更新的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

如果是离打包,记得添加sdk install-apk-release.aar

更多关于uni-app 使用plus.runtime.install无法拉起安装更新的实战教程也可以访问 https://www.itying.com/category-93-b0.html


解决了吗大佬 我也遇到同样的问题 甚至还报错 : “code“: -1201, “message“: “WGT/WGTU文件格式错误“

uni-app 中使用 plus.runtime.install 时,如果无法拉起安装更新,可能是由于以下几个原因导致的。下面我将逐一分析并提供解决方案:

1. 文件路径问题

确保你提供的安装包路径是正确的,并且文件确实存在。如果路径错误或文件不存在,plus.runtime.install 将无法正常工作。

plus.runtime.install('/path/to/your/app.apk', {
    force: true // 强制安装
}, function() {
    console.log('安装成功');
}, function(e) {
    console.log('安装失败: ' + JSON.stringify(e));
});

2. 文件权限问题

确保你的应用有权限读取和安装该文件。特别是在 Android 平台上,可能需要动态申请存储权限。

// 动态申请存储权限
uni.authorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        // 权限申请成功,继续安装
        plus.runtime.install('/path/to/your/app.apk', {
            force: true
        }, function() {
            console.log('安装成功');
        }, function(e) {
            console.log('安装失败: ' + JSON.stringify(e));
        });
    },
    fail() {
        console.log('权限申请失败');
    }
});

3. 文件类型问题

确保你安装的文件是有效的 APK 文件。如果不是有效的 APK 文件,plus.runtime.install 将无法安装。

4. 平台兼容性问题

plus.runtime.install 是 HBuilderX 提供的 API,主要支持 Android 平台。在 iOS 平台上,由于系统限制,无法直接通过这种方式安装应用。

5. 安全设置问题

在 Android 设备上,用户可能需要在设置中允许安装来自未知来源的应用。你可以在代码中引导用户打开设置页面:

if (plus.os.name === 'Android') {
    var main = plus.android.runtimeMainActivity();
    var Intent = plus.android.importClass('android.content.Intent');
    var Settings = plus.android.importClass('android.provider.Settings');
    var intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
    main.startActivity(intent);
}

6. 调试和日志

如果以上方法都无法解决问题,建议通过调试和日志来进一步排查问题。可以在 plus.runtime.install 的成功和失败回调中打印日志,查看具体的错误信息。

plus.runtime.install('/path/to/your/app.apk', {
    force: true
}, function() {
    console.log('安装成功');
}, function(e) {
    console.log('安装失败: ' + JSON.stringify(e));
});
回到顶部