Obtener la ruta del file absoluto desde el URI de contenido para las imágenes buscadas

Estoy tratando de compartir imágenes de otras aplicaciones a mi aplicación con intención implícita ACTION_SEND .

Al compartir imágenes de búsqueda desde el browser Chrome, la aplicación recibe intenciones con un URI de contenido como este: content://com.android.chrome.FileProvider/images/screenshot/1457448067808912906311.jpg

¿Cómo puedo search la ruta del file desde este tipo de URI de contenido? Todas las otras aplicaciones como Facebook, Google+ lo están haciendo. Estoy utilizando FileChooser para get la ruta del file de otros types de URI de contenido (por ejemplo, de la Galería).

Intenté search en todas partes, sin mucha ayuda. ¿Alguien puede sugerir cómo trabajar con estos URI de contenido?

    Si necesita absolutamente una copy local del file, necesitará abrir InputStream copyr el contenido en un file local al que conoce la ruta y luego ir desde allí. Sidenote: la ByteStreams#copy Guava es una manera fácil de lograr esto.

    Por supuesto, este file ya no está respaldado por la fuente original de Uri, por lo que no creo que esto sea lo que desea. En cambio, debes trabajar con la API prevista de Uri. Eche un vistazo al Marco de acceso de almacenamiento

    Editar

    Aquí es cómo puedes get un InputStream de tu Uri

     InputStream inputStream = getContentResolver().openInputStream(uri); 

    ¿Cómo puedo search la ruta del file desde este tipo de URI de contenido?

    No es así, ya que no tiene que haber ningún file detrás del Uri , y mucho less uno al que pueda acceder. Que Uri podría señalar:

    • Un file local en almacenamiento externo
    • Un file local en el almacenamiento interno para la otra aplicación
    • Un file local en almacenamiento extraíble
    • Un file local que está encriptado y necesita ser desencryption sobre la marcha
    • Una secuencia de bytes en una columna BLOB en una database
    • Un contenido que necesita ser descargado por la otra aplicación primero
    • …y así

    Todas las otras aplicaciones como Facebook, Google+ lo están haciendo

    No, ellos no son. Están usando ContentResolver y:

    • openInputStream() para leer en los bytes asociados con el contenido
    • getType() para get el tipo MIME asociado con el contenido
    • query() y OpenableColumns para get el tamaño y el nombre para mostrar asociado con el contenido