Home > Back-end >  Failed to Save Files on Storage [FileSystemException] Flutter
Failed to Save Files on Storage [FileSystemException] Flutter

Time:10-03

I uploaded an android photo compress application in play store and I checked every thing is ok, but some users have issue that the applicatoin can not save compressed photos, I checked that and I found this error

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: FileSystemException: Cannot create file, path = '/storage/emulated/0/My Folder/photo.jpg' (OS Error: Operation not permitted, errno = 1)

This is permissions AndroidManifest.xml

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_MEDIA_LOCATION"/>
<uses-permission android:name="android.permission.CAMERA"/>

This line inside application tag

android:requestLegacyExternalStorage="true"

I looked for some solutions and founded this permission line

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
        tools:ignore="ScopedStorage" />

But when ask for this permission android shows to user warning the application will access to all files without asking permission, I feel this is worrying for users and some may be affraid of this permission, however I uploaded the application but it was rejected because using MANAGE_EXTERNAL_STORAGE permission.

CodePudding user response:

you are right regarding MANAGE_EXTERNAL_STORAGE permission. Your app will be removed from play store if you don't have valid reasons. You may have to create a video and explain why you need these permission, and how scoped storage can't help you.

Now, you should know one thing that you are trying to create a folder directly inside internal storage. This will work in lower android versions but will fail in Android 10 or above even when you have WRITE_EXTERNAL_STORAGE granted.

Try creating your files inside public directories like Download or Documents. If the files downloaded doesn't need to be accessed by users then you can always save in your package folder context.getExternalFilesDir(null)

Hope this helped you! If you have any further doubts feel free to comment down below.

  • Related