8

Estoy escribiendo un editor de imágenes en Android. Hasta ahora tiene una sola actividad. A partir de esta actividad, puedo cargar una imagen usando una opción de menú que llame a la actividad de la Galería, y en onActivityResult trato la imagen recibida para pintar mi lienzo para poder editarlo. Esto está funcionando bien.Filtro de intenciones: intent.getData() devuelve nulo

Lo que me gustaría hacer ahora es hacer que esta actividad se llame desde cualquier otro lugar, así que en lugar de tener que elegir una imagen desde dentro de la actividad, podría abrir la Galería, elegir una foto y enviarla a mi aplicación . Pero no puedo entender cómo.

En mi manifiesto, he puesto el siguiente dentro de los <activity> tags:

<intent-filter> 
    <action android:name="android.intent.action.SEND" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="image/*" /> 
</intent-filter> 

Entonces, en mi actividad, como se menciona en http://developer.android.com/training/basics/intents/filters.html, he puesto el siguiente dentro de onCreate():

... 
//after initializing my view and stuff 

Intent intent =getIntent(); 
Uri image = intent.getData(); 

//code to do something with my uri 
... 

Cuando instalo la aplicación en mi teléfono y luego abro la Galería, puedo elegir una imagen y usar el menú "enviar" y mi aplicación aparecerá en la lista de aplicaciones, pero cuando la selecciono, se abre mi aplicación pero ignora la imagen. Resulta que el uri que obtengo de intent.getData() es nulo, y no puedo entender por qué.

¿Estoy haciendo algo mal? ¿Estoy olvidando algo? Si debe saberlo, estoy en stock de Android 2.3 utilizando la galería CoolIris que se proporciona con él.

Respuesta

22

El Uri que desea está en el paquete. He tratado a continuación código y puedo conseguir el URI de la imagen como content://media/external/images/media/1750

Intent intent = getIntent(); 
Bundle bundle = intent.getExtras(); 
Uri uri = (Uri)bundle.get(Intent.EXTRA_STREAM); 

Más información se puede ver el ACTION_SEND

+0

Esto es exactamente lo que necesitaba. ¡Gracias! Entonces, ¿la documentación de Google está equivocada o estaba malinterpretando algo? – ziritrion

+0

Consulte el documento ACTION_SEND, que explica la 'entrada' que debe enfocar. – dreamtale