Appcelerator - сохранить изображение на внешнее хранилище на Android 8 - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь сохранить изображение во внешнем хранилище на Android 8.0.0, но запись всегда завершается неудачно, код работает на Android ниже 8. Я запросил разрешение на хранение, приложение имеет разрешение на чтение и записьна внешнее хранилище

var imageBlob = Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory, "test.png");
   var external = Ti.Filesystem.getFile(Ti.Filesystem.externalStorageDirectory);
   if (Ti.Filesystem.isExternalStoragePresent()) { //returns true
       Ti.API.info("external storage present");
       if (!external.exists()) { //returns false
           if (external.createDirectory()) { //returns false
               Ti.API.info("directory created");
           } else {
               Ti.API.info("error creating dir");
           }
           Ti.API.info("external.exists= " + external.exists());
       }else{
          var f = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, "original.png");
          if(file.exists()){ //returns true
              if(imageBlob.write(file.read())){ //returns false
                Ti.API.info("image saved");
              }
          }
       }
   }

Редактировать: Благодаря помощи одного из членов TiSlack я смог решить эту проблему вместо использования Ti.Filesystem.requestStoragePermissions для запроса разрешения на хранение, которое я использовал

var permissions = ['android.permission.WRITE_EXTERNAL_STORAGE'];
Ti.Android.requestPermissions(permissions, function(e) {...})
...