Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Can';使用FileTransfer和WebIntent插件更新apk_Android_Angularjs_Ionic - Fatal编程技术网

Android Can';使用FileTransfer和WebIntent插件更新apk

Android Can';使用FileTransfer和WebIntent插件更新apk,android,angularjs,ionic,Android,Angularjs,Ionic,我用ionic框架制作了一个应用程序。对于自动更新功能,我使用FileTransfer插件下载apk和WebIntent来开始安装。但是出现了一个错误:“解析错误,解析包时出现问题”。 下载的apk肯定很好,路径是/data/data/com.myapp.app/cache/。我可以在文件资源管理器中手动启动安装。即使我将好的apk从PC复制到手机上,错误仍然是一样的 以下代码用于下载和安装: $scope.updateVersion = function(){ window.request

我用ionic框架制作了一个应用程序。对于自动更新功能,我使用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);
  });    
}

不要使用null作为选项,告诉文件传输插件您要下载的文件是android应用程序包:

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);

哦,那是我的错。使用FileTransfer下载时。不需要先创建文件。因此,不需要以下代码:

  window.requestFileSystem(LocalFileSystem.TEMPORARY, 10*1024*1024, function(fileSystem){
    fileSystem.root.getFile($scope.appNameWithVersion, {
        create: true
      }, function(fileEntry) {

谢谢你的帮助。但它不起作用。下载的apk可以从其他文件资源管理器手动安装。所以我认为这不是apk文件的问题。我尝试使用另一个应用程序apk文件,同样的错误.hm。那么也许你的问题出在webintent.startActivity。。试试这个插件哦…我的错。下载文件时,无需先创建文件。非常感谢你!