Try this:
FileTools
extension from @vknow360 → here and here.
Note:
- You cannot pick a file from a removable (micro) SDcard with this extension.
- You must request
READ
permission on Android 11+ andWRITE
on Android < 11.
Try this:
FileTools
extension from @vknow360 → here and here.
Note:
- You cannot pick a file from a removable (micro) SDcard with this extension.
- You must request
READ
permission on Android 11+ andWRITE
on Android < 11.
Note: There is a bug in this extension:
WRITE
permission MUST be declared in the Manifest on Android 11+.
Otherwise you get this error message:
As a workaround set → DefaultFileScope = Legacy (in the Designer).
FilePicker.aia (51.4 KB)
Hi Anke, I did as you described above with the work-around DefaukltFileScope in Designer = "Legacy" (and I even tried it out with your example aia), but I still get the message "Permission was not granted". On my Samsung with Android 12, SdkVersion = 31.
Any clue?
KR, Oli
Yes, WRITE
permission must now also be requested on Android 11+ in order for the extension to work on Android 11+ devices, which of course makes no sense at all since WRITE
permission no longer exists there.
Thx, Anke.
Does that bottomline mean, that uploading any file from e.g. /Documents/ or /Download/ is not at all possible if Android > 11+? Or is there any work-around possible (with e.g. other extensions)?
I only want to pick a simple txt file which I have edited in my smartphone and after picking, i want to upload it to a webspace with SFTP (which itself is no issue, just I cannot "grab" that file so far).
If you edited the text file on your phone (outside of your app), this text file is no longer created by your app itself. In this case you must use SAF
to access it on Android 11+.
See also my guide "How to access media and non-media files on Android 11+" → here.
The following question remains to be clarified:
Why are you (the user) editing the text file on your device? Can't this be done within the app itself?
Ah, yes, now I remember: SAF is the way!
I used it in a previous project, but forgot
Have implemented SAF now again, still works fine.
Thanks!
Rgdg your question:
I have written an app that replaces html-files of a website on server-side. I keep downloading and uploading them with SFTP from my hone to the website.
I do not really want to EDIT those HTML-files, but i need to have them in an normal directory ("external storage") and need to be able to upload them from there.
And the App-specific directory is not visible to me as a user.
Where do these HTML files come from, who created and edited them? I am assuming they are not created/edited on a mobile phone. So why not upload them to the server via the computer. Then they could be downloaded from there with the app, so that (read) access without SAF is possible on all Android versions (for the ASD and the Shared folders).
How to ask for PDF files on Android 11+ ?
@Anke Sorry for the late reply, but my problem was solved with your first answer Thank you for that!
Those HTML files are actually partly composed by the user of my app. After editing, the files shall get uploaded to the webserver of the user.
KR, Oliver
Hi,
is it possible to import a csv-document (e.g. from the folder "Downloads") using the File Picker. It doesnt work for me.
Thanks in advance
See here Some basics on Android storage system
I.e. you can use the file picker extension only if the file was previously stored by your app...
If not, you have to use SAF
Taifun
Thanks a lot, are there examples on how to do this?
Show your blocks.
And tell us if the CSV file was created by your app. If not, as @Taifun said you must use SAF on Android 11+. EDIT: But then you can't pick a non-media file from the Shared folder /Download, but from the non-shared folder /Downloads. (see my post #37)
See also here:
I have to admit, I don't really get along with the SAF -extension, maybe my knowledge therefore is just too limited. With only the documentation provided I am not able to simply open a csv-file (I want to write the data in a Database later).
and the csv wasn't created by the app.