Не могу обновить apk с помощью FileTransfer и плагина WebIntent

0

Я сделал приложение с использованием ионной структуры. Для автоматической функции обновления я использовал плагин FileTransfer для загрузки apk и WebIntent для начала установки. Но возникает ошибка: "Ошибка анализа, возникла проблема с разбором пакета". Скачанный apk, безусловно, прекрасен, и путь -/data/data/com.myapp.app/cache/. Я могу начать установку в проводнике файлов вручную. Даже я скопировал хороший apk с моего ПК на телефон, ошибка все тот же.

Следующий код предназначен для загрузки и установки:

$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);
  });    
}
Теги:
ionic

2 ответа

0

Ох... Это была моя ошибка. При использовании FileTransfer для загрузки. Не нужно сначала создавать файл. Поэтому код ниже не нужен:

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

Не используйте 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);
  • 0
    Спасибо за помощь. Но это не работает. Скачанный APK может быть установлен вручную из другого файлового менеджера. Поэтому я думаю, что это не проблема файла apk. И я попытался использовать другой файл apk приложения, та же ошибка.
  • 0
    гектометр тогда, возможно, ваша проблема внутри webintent.startActivity .. попробуйте этот плагин github.com/pwlin/cordova-plugin-file-opener2
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню