Getting the Absolute File Path from Content URI for searched images

后端 未结 2 696
再見小時候
再見小時候 2020-11-21 22:53

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

相关标签:
2条回答
  • 2020-11-21 23:35

    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:

    • A local file on external storage
    • A local file on internal storage for the other app
    • A local file on removable storage
    • A local file that is encrypted and needs to be decrypted on the fly
    • A stream of bytes held in a BLOB column in a database
    • A piece of content that needs to be downloaded by the other app first
    • ...and so on

    All 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 content
    • getType() to get the MIME type associated with the content
    • query() and the OpenableColumns to get the size and display name associated with the content
    0 讨论(0)
  • 2020-11-21 23:50

    If 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);
    
    0 讨论(0)
提交回复
热议问题