sln download - eju-front/mobile-solution GitHub Wiki
应用内下载
目的
在当前应用中下载 APK 保存到本地,并执行安装程序
安装指南
-
安装 file 插件,用于访问设备上的文件,详细使用文档见 cordova-plugin-file
cordova plugin add cordova-plugin-file
-
开启文件读写权限,修改
config.xml
,添加以下两句代码<preference name="AndroidPersistentFileLocation" value="Internal" /> <preference name="AndroidPersistentFileLocation" value="Compatibility" />
-
安装 file-transfer 插件,用于进行 I/O 操作,详细使用文档见 cordova-plugin-file-transfer
```bash
cordova plugin add cordova-plugin-file-transfer
```
-
安装 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);