2009-10-09 13 views
5

El del lado del cliente de un consumidor proveedor de contenido que pueda hacer algo como esto, para conseguir un InputStream adecuado para la lectura de la imagen:¿Devuelve una entrada asignada de memoria InputStream desde un proveedor de contenido?

InputStream is = getContentResolver().openInputStream(pictureUri); 

Es un buen API, y lo hará en el lado del servidor, el actual contenido resultado proveedor de una llamada a:

public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { 
    // Open a proper ParcelFileDescriptor, most likely using openFileHelper(uri, mode) 
} 

pero lo que si la imagen asignada a la URI no se va a encontrar en el sistema de archivos, sino como un recurso de memoria, o se genera sobre la marcha.

¿Puedo crear una memoria mapeada File o InputStream, o cualquier otra cosa, por lo que no estoy obligado a guardar un archivo temporal en el disco, solo para poder devolverlo a mi proveedor de contenido?

Respuesta

1

Esto es duro. Usted podría ser capaz de salirse con la suya usando cualquier cosa que pueda usar una interfaz de Socket. Yo no lo he hecho, pero esto es lo que me hace pensar así:

http://developer.android.com/reference/android/os/ParcelFileDescriptor.html#fromSocket(java.net.Socket)

y una toma podría, en teoría, ser un recurso de Internet, o casi cualquier cosa ... si usted está dispuesto a trabajar en el nivel de Socket. Probablemente me rendiría y crearía el archivo temporal. Quizás eso me hace un cobarde.

+0

Esa es una solución que podría funcionar, pero no lo que yo quiero hacerlo. Realmente quiero poder usar consistentemente el método 'ContentResolver # openInputStream()' para leer todo tipo de datos remotos. Independientemente de cómo el servidor crea/obtiene los datos. Se trata de no exponer la implementación del servidor al cliente. – PeyloW

+0

@PeyloW ¿Encontraste una solución a esto? Estoy buscando una solución también. – Sunny

+0

@Sunny Ninguno que no es un truco. Así que terminé guardando archivos temporales y enviando descriptores de archivos. – PeyloW

Cuestiones relacionadas