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.
Esto es exactamente lo que necesitaba. ¡Gracias! Entonces, ¿la documentación de Google está equivocada o estaba malinterpretando algo? – ziritrion
Consulte el documento ACTION_SEND, que explica la 'entrada' que debe enfocar. – dreamtale