sample project and issue documented…
found the problem
Apps targeting Android 10 (API level 29) and higher are given scoped access into an external storage device, or scoped storage , by default. Such apps can see only their app-specific directory
the media plugin is writing to the external directory so any app that wants to read the content, cannot read it with having permission to that directory which in Android 10 and beyond, you dont have.
I am not very good at Android so I haven’t been able to hack around inside the capacitor code to see how this issue is resolved with the camera yet
Now i need a solution?
The issue looks like it has been resolved with this PR, where all of the permissions are granted when capacitor loads?
I tested my project without the change to the manifest and it works fine now, so I guess this PR did the trick
I had tried to request permissions using the Capacitor API but it never worked
No, that PR only allows Filesystem plugin to request the read/write permissions, but even if the user accepts the permissions, the external storage is still not accesible on Android 10 if the app is built with SDK 29.
It can work if you previously installed the same app in the same device but compiled with SDK 28, then when you build with SDK 29 will still work, but if you delete the app and you build with SDK 29 and install, it won’t work.
You can also add
android:requestLegacyExternalStorage="true" to the
application tag of the
AndroidManifest.xml, that will make the external storage work as if it was built with SDK 28.