sln download - eju-front/mobile-solution GitHub Wiki

应用内下载

目的

在当前应用中下载 APK 保存到本地,并执行安装程序

安装指南

  1. 安装 file 插件,用于访问设备上的文件,详细使用文档见 cordova-plugin-file

    cordova plugin add cordova-plugin-file
    
  2. 开启文件读写权限,修改 config.xml,添加以下两句代码

    <preference name="AndroidPersistentFileLocation" value="Internal" />
    <preference name="AndroidPersistentFileLocation" value="Compatibility" />
    
  3. 安装 file-transfer 插件,用于进行 I/O 操作,详细使用文档见 cordova-plugin-file-transfer

```bash
cordova plugin add cordova-plugin-file-transfer
```
  1. 安装 webintent 插件,用于安装 APK 文件,详细使用文档见 cordova-plugin-webIntent

    cordova plugin add https://github.com/Initsogar/cordova-webintent.git
    

使用方法

添加以下代码,如果需要使用进度条,需要在以下代码对应位置添加界面更新的部分

// 下载 APK
function download(apkUrl) {
    window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function (fs) {
      	// 存放到本地临时文件的 APK 名
        fs.root.getFile("tmp.apk", {
            create: true,
            exclusive: false
        }, function (fileEntry) {
            var localPath = fileEntry.toURL();
         
            var fileTransfer = new FileTransfer();
            fileTransfer.onprogress = function(event){
                // 处理进度条
                if(event.lengthComputable){
                    var percent = event.loaded / event.total;
                    // 可以在这个地方更新自定义的进度条的进度
                } else {
                    // 处理当进度不可计算时
                }
            };
            fileTransfer.download(
                apkUrl,
                localPath,
                function (entry) {
                    console.log("Successful download...");
                    console.log("download complete: " + entry.toURL());
		   // 下载完成,安装 APK
                    installApk(entry.toURL());
                },
                function (error) {
                    console.log("error on downloading");
                    console.log(error);
                }
            );
        }, function (e) {
            console.log("error on create file");
            console.log(e);
        }, true);

    }, function (e) {
        console.log("error on access file system");
        console.log(e);
    });
}

 // 安装 APK
function installApk(url) {
    window.plugins.webintent.startActivity({
            action: window.plugins.webintent.ACTION_VIEW,
            url: url,
            type: 'application/vnd.android.package-archive'
        },
        function () {
        },
        function (e) {
            alert('Error launching app update');
        }
    );
}

使用时只需调用以下代码即可,下载完后会自动弹出安装界面

 var apkUrl = 'http://msoftdl.360.cn/mobile/shouji360/360safesis/360MobileSafe_7.3.0.1015.apk';
download(apkUrl);