> W DRC : java.lang.SecurityException: Permission Denial: reading > com.android.externalstorage.ExternalStorageProvider uri > content://com.android.externalstorage.documents/document/primary%3ADownload > %2Fbankdrc.dbf from pid=15086, uid=10502 requires that you obtain access > using ACTION_OPEN_DOCUMENT or related APIs > > There is a lot of boiler plate to handle the permissions to write to the > system. > > Is there any example where this boiler plate code can be found? >
Hi, I don't know any official example. The last Android-related point on the QFile documentation suggests that Qt might not be of much help when it comes to consuming content URLs (see https://doc.qt.io/qt-6/qfile.html). I once wrote an app that is able to read and write content URLs using standard I/O streams. You can find it here: https://github.com/Martchus/passwordmanager It was written before Qt had support for Android file dialogs so I did that part manually (but now you should of course rely on Qt for that). You could probably also just use the QFile overload that takes a file descriptor instead of using standard I/O streams because the latter is actually very involved. (I only did it because my code was already using I/O streams.) Another approach is to ditch the weird content URLs and work with normal paths. For this you need to "convert" the content URL to a normal path. You can find (probably very hacky) code on another project I'm currently working on: https://github.com/Martchus/syncthingtray/blob/master/tray/android/src/io/ github/martchus/syncthingtray/Util.java Here I chose this approach because I also wanted to use std::filesystem and Go code so this content stuff just gets in the way. I have actually just tested whether this works on a real device and it does on an Android 14 one - even writing to the SD card. You will most likely run into permission errors under older Android versions. Not sure as of what version this approach works. I think this approach also relies much on super greedy permissions (see https:// github.com/Martchus/syncthingtray/blob/ 49e898644b8c1f4bdbcef2a2ddb8f4fcd410bdef/tray/resources/ AndroidManifest.xml.in#L11C55-L11C78) so that would be problematic if you wanted to publish the app on Google Play. Best Regards Marius _______________________________________________ Interest mailing list Interest@qt-project.org https://lists.qt-project.org/listinfo/interest