[Interest] Problems writing files to Android file system on some newer devices using QStandardPaths

Nuno Santos nuno.santos at imaginando.pt
Tue May 25 18:02:43 CEST 2021


Jerome,

Thank you very much for your reply and for the link.

DocumentsLocation is point to /storage/emulated/…

But I’ve been trying with other QStandardPath such as ConfigLocation and DataLocation. Those were point to something like /user/app_identififier_/files/, can’t remember exactly now. But when trying to write to those locations, it would always fail. 

Are QStandardPath Android locations compatible with Scoped Storage? Would I need to refactor my Qt code or this is just a thing we need to enable in the app manifest?

Thank you!

Best regards,

Nuno

> On 25 May 2021, at 14:22, Jérôme Godbout <godboutj at amotus.ca> wrote:
> 
> Where the standard path resolve on the device? 
>  
> On Android 10, they changed the way we can access the file system, you can opt out with android:requestLegacyExternalStorage=“true” but this flag doesn’t work for Android 11+. If removing this flag break your applications, it means your application won’t work on any Android 11 devices.
>  
> The application are now sandboxed, Android 10 make it optional, Android 11 enforce it. You need to move to scoped storage.
> https://developer.android.com/about/versions/11/privacy/storage <https://developer.android.com/about/versions/11/privacy/storage>
>  
>  
> Jérôme Godbout, B. Ing.
> 
> Software / Firmware Team Lead
> O: (418) 682-3636 ext.: 114  
> C: (581) 777-0050 
> godboutj at dimonoff.com <mailto:godboutj at dimonoff.com>
> <image001.png> <https://www.dimonoff.com/>
> dimonoff.com <https://www.dimonoff.com/>
> 1015 Avenue Wilfrid-Pelletier, 
> Québec, QC G1W 0C4, 4e étage
>  
>  
> From: Interest <interest-bounces at qt-project.org> on behalf of Nuno Santos <nuno.santos at imaginando.pt>
> Date: Monday, May 24, 2021 at 8:17 AM
> To: Qt Interest <interest at qt-project.org>
> Subject: [Interest] Problems writing files to Android file system on some newer devices using QStandardPaths
> 
> Hi,
>  
> Is anyone aware of changes to the way that Android filesystem works and how Qt interacts with it?
>  
> I’ve been writing to QStandardPaths::DocumentLocations without any issues until. However, on some newer devices, it fails to open files for writing. One example is Samsung Tab A (SM-T500)
>  
> It seems though that using android:requestLegacyExternalStorage=“true” seems to fix the problem but this solution will not last long because it seems it will be ignored when the app targets API 30 (Android 11):
>  
> https://developer.android.com/training/data-storage/use-cases <https://developer.android.com/training/data-storage/use-cases>
>  
> Caution: After you update your app to target Android 11 (API level 30), the system ignores the requestLegacyExternalStorage attribute <https://developer.android.com/about/versions/11/privacy/storage#scoped-storage> when your app is running on Android 11 devices, so your app must be ready to support scoped storage and to migrate app data <https://developer.android.com/training/data-storage/use-cases#migrate-legacy-storage> for users on those devices.
>  
> Is there any common knowledge about this? 
>  
> Thanks!
>  
> Regards,
>  
> Nuno

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20210525/f96b92c2/attachment.html>


More information about the Interest mailing list