[Interest] Save / load file contents on android

ekke ekke at ekkes-corner.org
Fri Sep 3 16:32:28 CEST 2021


Am 03.09.21 um 16:08 schrieb Nuno Santos:
> So, if the application data is sandboxed, how do we migrate data that 
> used to be in shared locations to the sandbox?
>
> I was using the Documents location to keeps users presets, but now I 
> will need to migrate those files to inside the app
>
> From your experience what is the most appropriated 
> QStandardPathlocation to store user data from Android 11 onwards?
I'm always using

QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).value(0)

to store user data. (Android and iOS)

ekke

>
>> On 3 Sep 2021, at 14:53, Jérôme Godbout <jgodbout at dimonoff.com 
>> <mailto:jgodbout at dimonoff.com>> wrote:
>>
>> Humm not sure about all the enum, but the one I was using did not. 
>> Maybe we can do a build and print those path for both Android 11 and 
>> 12 to compare, but my guess is sthat should be the same.
>> The Android 11 bring is that it lock down as private the application 
>> folder, other application can no more access the files/folders of 
>> another application. So if you were sending files/folders path to 
>> another application for them to open it will no more work. They are 
>> now sandboxed.
>> A bit like iOS application have been for a while, but on iOS you can 
>> define a group to allow special access to given application as long 
>> as the domain match the group.
>>
>> *From:*Nuno Santos <nuno.santos at imaginando.pt 
>> <mailto:nuno.santos at imaginando.pt>>
>> *Date:*Friday, September 3, 2021 at 9:33 AM
>> *To:*Jérôme Godbout <jgodbout at dimonoff.com 
>> <mailto:jgodbout at dimonoff.com>>
>> *Cc:*ekke <ekke at ekkes-corner.org <mailto:ekke at ekkes-corner.org>>, Qt 
>> Interest <interest at qt-project.org <mailto:interest at qt-project.org>>
>> *Subject:*Re: [Interest] Save / load file contents on android
>>
>> But doesn’t QStandardPath resolve to different locations depending if 
>> legacyExternalStorage is enabled or not?
>>
>>
>>     On 3 Sep 2021, at 13:51, Jérôme Godbout <jgodbout at dimonoff.com
>>     <mailto:jgodbout at dimonoff.com>> wrote:
>>     Take care with the eternal storage opt out will no more be
>>     possible after November. We will need to target SDK 12 to publish
>>     to the store. So the 11 opt out flag will no more be possible
>>     (November for existing application, for new application it’s
>>     already started since august).
>>     Try to push an update asap so your user can migrate the data to
>>     the application proper folder. Other application cannot access
>>     the files anymore. If your file are already into the application
>>     data folder you do not have to worry much you still can access
>>     them easily.
>>     But the QStandard path have work fine for us so far.  You can
>>     check the actual path it resolve to on this page (scroll a bit
>>     down to see the path for Android):
>>     https://doc.qt.io/qt-5/qstandardpaths.html#StandardLocation-enum
>>     <https://doc.qt.io/qt-5/qstandardpaths.html#StandardLocation-enum>
>>
>>     *From:*Interest <interest-bounces at qt-project.org
>>     <mailto:interest-bounces at qt-project.org>> on behalf of ekke
>>     <ekke at ekkes-corner.org <mailto:ekke at ekkes-corner.org>>
>>     *Date:*Friday, September 3, 2021 at 5:47 AM
>>     *To:*Nuno Santos <nuno.santos at imaginando.pt
>>     <mailto:nuno.santos at imaginando.pt>>
>>     *Cc:*Qt Interest <interest at qt-project.org
>>     <mailto:interest at qt-project.org>>
>>     *Subject:*Re: [Interest] Save / load file contents on android
>>
>>     Hi Nuno,
>>     Am 03.09.21 um 11:05 schrieb Nuno Santos:
>>
>>         Ekke,
>>         I have been experiencing some inconsistencies with Android
>>         file access using QStandardPaths, mostly now that I’m
>>         preparing the ground for Android 11 support. From Android 11
>>         onwards, there will be changes in the way an app can access
>>         filesystem resources.
>>         This problem started when one of apps was in some systems
>>         using legacy file access while in others was already using
>>         the new storage approach. In order to temporary fixes this
>>         issues I have set the requestLegacyExternalStorage to true,
>>         however, soon this will end as in Android 11 it will be ignored.
>>
>>     I'm in the same situation as you ;-) have set
>>     requestLegacyExternalStorage ATM
>>     last weeks had much work moving all my projects from Qt 5.13.2 to
>>     5.15.5, so I can prepare for Qt 6.2
>>     now there will be 3 weeks vacation
>>     then support of Android 11 file storage will be high on my TODO list
>>     ... and hoping then to find some docs / tips HowTo support this
>>     from Qt ;-)
>>     ekke
>>
>>         One of the current challenges I’m facing the moving/copying
>>         resources from legacy storage to new storage when using
>>         QStandardPaths and QFileDialog.
>>         How have you been handling Android 11 support and data
>>         migration from older versions?
>>         Are you able to do it just with Qt stuff or do you need to
>>         handle some of the things with native android API’s?
>>         Thanks!
>>         Nuno
>>
>>             On 31 Aug 2021, at 13:38, ekke <ekke at ekkes-corner.org
>>             <mailto:ekke at ekkes-corner.org>> wrote:
>>             Am 31.08.21 um 14:12 schrieb Wilhelm Meier via Interest:
>>
>>                 Hi all,
>>
>>                   
>>
>>                 does anybody have a minimum working example how to load / save json file
>>
>>                 contents (auscii contents) to / from a file on android.
>>
>>                   
>>
>>                 I made several attempts, but I get weird filenames and I'm not able to
>>
>>                 load the stored file.
>>
>>                   
>>
>>                 thx
>>
>>                 _______________________________________________
>>
>>                 Interest mailing list
>>
>>                 Interest at qt-project.org  <mailto:Interest at qt-project.org>
>>
>>                 https://lists.qt-project.org/listinfo/interest  <https://lists.qt-project.org/listinfo/interest>
>>
>>             Hi,
>>
>>             some snippets HowTo save a JSON. use QVariantMap for a
>>             JSON Object or QVariantList for JSON Array
>>
>>                
>>             QJsonDocumentjda=QJsonDocument::fromVariant(myQVariantMap);
>>
>>             QByteArraybuffer=jda.toJson();
>>
>>             saveTestFile("_my_test.json",buffer);
>>
>>             ...
>>
>>             voidDataServer::*saveTestFile*(constQString&fileName,constQByteArray&buffer)
>>
>>             {
>>
>>             QStringfilePath=mDataManager->dataPath(fileName);
>>
>>             QFilesaveFile(filePath);
>>
>>             if(!saveFile./open/(QIODevice::WriteOnly)){
>>
>>             qWarning()<<"Couldn't open file to write "<<filePath;
>>
>>             return;
>>
>>             }
>>
>>             qint64bytesWritten=saveFile.write(buffer);
>>
>>             saveFile./close/();
>>
>>             qDebug()<<"Bytes written: "<<bytesWritten<<" to: "<<filePath;
>>
>>             }
>>
>>             ....
>>
>>             //Android:AppDataLocationworksoutofthebox,iOSyoumustcreatetheDIRfirst!!
>>
>>             mDataRoot=QStandardPaths::standardLocations(QStandardPaths::AppDataLocation).value(0);
>>
>>             mDataPath=mDataRoot+"/data/";
>>
>>             ----
>>
>>             and reading is similar
>>
>>                 jda=QJsonDocument::fromJson(dataFile.readAll());
>>
>>             dataFile./close/();
>>
>>             if(!jda.isArray()){
>>
>>             myMap = jda.toVariant().toMap();
>>
>>             } else {
>>
>>                 myList=jda.toVariant().toList();
>>
>>                 }
>>
>>             -----
>>
>>             hope it helps
>>
>>             _______________________________________________
>>             Interest mailing list
>>             Interest at qt-project.org <mailto:Interest at qt-project.org>
>>             https://lists.qt-project.org/listinfo/interest
>>             <https://lists.qt-project.org/listinfo/interest>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20210903/5ed27da2/attachment-0001.html>


More information about the Interest mailing list