I am trying to share images from other applications to my application using implicit intent ACTION_SEND.
While sharing search images from chrome browser, app receiv
How can I fetch file path from this type of Content URI?
You don't, as there does not have to be a file at all behind the Uri
, let alone one that you can access. That Uri
might point to:
BLOB
column in a databaseAll other apps like Facebook, Google+ are doing it
No, they are not. They are using ContentResolver
and:
openInputStream()
to read in the bytes associated with the contentgetType()
to get the MIME type associated with the contentquery()
and the OpenableColumns
to get the size and display name associated with the contentIf you absolutely need a local copy of the file, you are going to need to open the InputStream
copy the contents to a local file that you know the path to and then go from there. Sidenote: Guava's ByteStreams#copy
is an easy way to accomplish this.
Of course this file is no longer backed by the original Uri source, so I don't think this is what you want. Instead, you should work with the Uri's intended API. Take a look at the Storage Access Framework
Edit
Here is how you can get an InputStream
from your Uri
InputStream inputStream = getContentResolver().openInputStream(uri);