Cordova / Quasar Framework - проблема с правами доступа к файлам - PullRequest
1 голос
/ 18 марта 2019

У меня были проблемы с загрузкой файла в папку «Загрузки» с моим приложением.

Я поместил свой файл config.xml и проверил на AndroidManifest.xml, и у них обоих естьявные разрешения:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.NETWORK_ACCESS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Я использую cordova-plugin-android-permissions , чтобы проверить их на лету, и они тоже там.При использовании только cordova-plugin-file + XMLHttpRequest в соответствии с рекомендациями по документам он не выдавал никаких ошибок, но при загрузке файла там не было.Когда я возвращаюсь к использованию cordova-plugin-file-Transfer , он дал мне следующий ответ:

{
  body: null
  code: 1
  exception: "/storage/emulated/0/download/test.mp3 (Permission denied)"
  http_status: 200
  source: "http://192.168.0.10/test.mp3"
  target: "file:///storage/emulated/0/download/test.mp3"
}

Мой текущий код следующий:

downloadFile(){
  var app = this;
  var permissions = cordova.plugins.permissions;
  permissions.checkPermission([permissions.READ_EXTERNAL_STORAGE,permissions.WRITE_EXTERNAL_STORAGE],
    /* Permission ok ok*/
    function(){
      let downloadUrl = "http://192.168.0.10/test.mp3";
      let name = "test.mp3"
      let filePath = cordova.file.externalRootDirectory + 'download/' + name
      let fileTransfer = new window.FileTransfer()
      let uri = encodeURI(decodeURIComponent(downloadUrl))

  // Downloading the file
  fileTransfer.download(uri, filePath,
    function (entry) {
      console.log('Successfully downloaded file, full path is ' + entry.fullPath)
      console.log(entry)
    },
    function (error) {
      console.log('error',error)
    },
    false
    )
  },

/* Asks for Permission */
function(errorLoad){
    permissions.requestPermissions([permissions.READ_EXTERNAL_STORAGE,permissions.WRITE_EXTERNAL_STORAGE],
  /* Permission Granted */ 
  function(){app.requestSystem()}, 

  /* Permissão Denied */
  function(errorLoad){
    console.error(errorLoad)
  });
  });  			

}

Буду признателен за любую помощь!Чего мне не хватает?

...