我使用离子框架制作了一款应用。对于自动更新功能,我使用FileTransfer插件下载apk和WebIntent以开始安装。但是出现了一个错误:“解析错误,解析包时出现问题”。 下载的apk肯定没问题,路径是/data/data/com.myapp.app/cache/。我可以手动开始在文件资源管理器中安装。即使我将好的apk从我的PC复制到手机,错误仍然相同。
以下代码用于下载和安装:
$scope.updateVersion = function(){
window.requestFileSystem(LocalFileSystem.TEMPORARY, 10*1024*1024, function(fileSystem){
fileSystem.root.getFile($scope.appNameWithVersion, {
create: true
}, function(fileEntry) {
var localPath = fileEntry.toURL();
var fileTransfer = new FileTransfer();
fileTransfer.onprogress = function(e){
console.log(e);
};
fileTransfer.download(
$scope.updateUrl, // set before
localPath,
function(entry) {
alert('download ok');
window.plugins.webintent.startActivity({
action: window.plugins.webintent.ACTION_VIEW,
url: localPath,
type: 'application/vnd.android.package-archive'
},
function(){},
function(e){
alert('Error launching app update');
}
);
},
function (error) {
alert("Error downloading APK: " + error.code);
},
true, {
//options for NULL
});
}, function(evt){
alert("Error downloading apk: " + evt.target.error.code);
});
}, function(evt){
alert("Error preparing to download apk: " + evt.target.error.code);
});
}
答案 0 :(得分:0)
不要使用null作为选项,告诉文件传输插件你要下载的文件是android aplication包:
var options = new FileUploadOptions();
options.mimeType = "application/vnd.android.package-archive";
fileTransfer.download(
$scope.updateUrl, // set before
localPath,
function(entry) {
alert('download ok');
window.plugins.webintent.startActivity({
action: window.plugins.webintent.ACTION_VIEW,
url: localPath,
type: 'application/vnd.android.package-archive'
},
function(){},
function(e){
alert('Error launching app update');
}
);
},
function (error) {
alert("Error downloading APK: " + error.code);
},
true,options);
答案 1 :(得分:0)
OH ..这是我的错。使用FileTransfer下载时。无需先创建文件。所以下面的代码是不需要的:
window.requestFileSystem(LocalFileSystem.TEMPORARY, 10*1024*1024, function(fileSystem){
fileSystem.root.getFile($scope.appNameWithVersion, {
create: true
}, function(fileEntry) {