Исключение файловой системы: Не удается открыть файл, путь = ‘хранилище/эмулированный/0/DCIM/документы/myPdf.pdf’ (Ошибка операционной системы: Операция не разрешена, errno = 1)

#flutter #dart

Вопрос:

Я пытаюсь создать pdf-документ и записать свои данные в этот файл. Данные представляют собой список типа int или uint. Можно сделать то же самое для изображений, но не для файлов pdf или doc. Все разрешения даны, и это работает для изображений. Мой код приведен ниже —

 Future <File> createDocFile(Uint8List fileData, String type) async
{
  File file = new File(".pdf");
  if(await PermissionHandler.checkPermission(Permission.storage)!=true){
    Url.toastShow("Storage permission not found.");
    await Permission.storage.request();
  }
  else {
    await file.writeAsBytes(fileData);
    print("PDF SAVED IN DEVICE");
    Url.toastShow("PDF saved in device",Colors.green);
  }    
}

 

Ответ №1:

Всякий раз, когда вы создаете новый файл, устройство не может автоматически найти его. Вам придется вручную указать устройству, чтобы оно обновило файлы. Раньше вам приходилось обновлять все файлы на устройстве, чтобы оно обновлялось, что было очень неэффективно, но теперь вы можете просто отправить путь к файлу, который вы хотите обновить. Для этого вы можете использовать плагин media_scanner.

Или, если вы хотите сделать это самостоятельно с котлином, то вот код,

 private fun broadcastFileUpdate(path: String){
    context.sendBroadcast(Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE,Uri.fromFile(File(path))))
}