We are aware of the issue with the badge emails resending to everyone, we apologise for the inconvenience - learn more here.
Forum Discussion
Andhie W.
10 years agoNew member | Level 1
Android ACTION_GET_CONTENT from Dropbox sources
Device OS: Lollipop 5.0
When using the Intent ACTION_GET_CONTENT
and selecting Dropbox from the Storage Provider, Dropbox prompts a file picker dialog to choose from. The result obtained in onActivityResult is something like
file:///storage/emulated/0/Android/data/com.dropbox.android/files/u6763728/scratch/Camera%20Uploads/2012-04-02%2012.34.44.jpg
The requesting app will not have read permission as its dropbox own private directory even with WRITE_EXTERNAL_STORAGE
permission. In KitKat, it is recommended to use FileProvider
to share a file via a content:// uri
- Greg-DBDropbox Staff
Thanks for your patience Craig. I heard back from engineering here with the following information:
-
FLAG_GRANT_READ_URI_PERMISSION
seems to have no effect. - On Android API level 18 (and presumably probably below), specifying
READ_EXTERNAL_STORAGE
orWRITE_EXTERNAL_STORAGE
does not matter. The calling app is able to read the file irrespective of these settings. - On Android API level 19 and above, the calling app needs the
READ_EXTERNAL_STORAGE
orWRITE_EXTERNAL_STORAGE
permission to be able to read the data provided by us.
Also, on Android API level 19 and above caller will need to read the data using the
ContentResolver#openInputStream(fileUri)
method to be able to read the files. While on API level 18 and below directly creating the file object to read the file works. -
- Craig M.21New member | Level 2
Thanks for that. I have not had any problems with reading the file. I am therefore unsure what the problem was that the other posters met.
I have read and write permissions set.
I initially used code like this (based on suggestions found online):
ParcelFileDescriptor mInputPFD = null ;
try {
mInputPFD = getContentResolver().openFileDescriptor(returnUri, "r");
} catch (FileNotFoundException e) {
e.printStackTrace();
System.out.println("File not found...");
return;
}
if(mInputPFD!=null){
fd = mInputPFD.getFileDescriptor();
FileInputStream fis = new FileInputStream(fd);
//process the input stream
}I tried the more direct method suggested above and it also worked:
FileInputStream fis = null ;
try {
fis = (FileInputStream) getContentResolver().openInputStream(returnUri);
}
catch (FileNotFoundException e1) {
e1.printStackTrace();
System.out.println("File not found...");
return ;
}//process the input stream
I am using targeted Android API 19.
Can I assume that the
ContentResolver#openInputStream(fileUri)
method will also work on API 18 and lower? - Greg-DBDropbox Staff
openInputStream
was added in API level 1 and is documented to support both content and file schemes, so it looks like it should work. - Greg-DBDropbox Staff
I don't have an update on the Dropbox for Android app potentially returning content:// links for ACTION_GET_CONTENT in the future, but I'll be sure to pass this along as feedback.
- Greg-DBDropbox Staff
Thanks for the additional feedback Evgeny! I can't speak to why or why not particular changes are or aren't implemented, but we appreciate everyone taking the time to write, and I'm sending this along to the team.
- tiNew member | Level 1
Hello, Gregory. Thank you for your reply.
I have one more question.
When the Dropbox supports `content://` URI, can we get that notification?
e.g. a comment at here, your blog or a page such as the release-note.
(It seems that the update information in the Google Play page does not include the information about development.)
We need that notification because we will have to update our apps at that time. - Greg-DBDropbox Staff
I'll be happy to update this thread if/when I have any news on this.
- tiNew member | Level 1
Thank you! :D
- Greg-DBDropbox Staff
Thanks for the feedback Marius!
- Greg-DBDropbox Staff
Thanks for the feedback Josh. I don't have an update on this unfortunately, but I'll send along your feedback as well.
About Dropbox API Support & Feedback
Find help with the Dropbox API from other developers.
5,878 PostsLatest Activity: 2 hours agoIf you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X or Facebook.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!