8

Sto scrivendo un editor di immagini in Android. Finora ha una singola attività. Da questa attività, posso caricare un'immagine utilizzando un'opzione di menu che richiama l'attività Galleria e in onActivityResult, tratta l'immagine ricevuta per dipingere la mia tela in modo da poterla modificare. Funziona beneFiltro intento: intent.getData() restituisce null

Quello che mi piacerebbe fare ora è rendere questa attività richiamabile da qualsiasi altra parte, quindi, invece di dover selezionare un'immagine dall'interno dell'attività, potrei semplicemente aprire la Galleria, scegliere una foto e inviarla alla mia app . Ma non riesco a capire come.

Sul mio manifesto, ho messo il seguente all'interno delle <activity> tag:

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

Poi, nella mia attività, come detto in http://developer.android.com/training/basics/intents/filters.html, ho messo il seguente all'interno onCreate():

Quando installo l'app nel mio telefono e poi apro la Galleria, posso scegliere un'immagine e usare il menu "invia" e la mia app apparirà nell'elenco delle app, ma quando selezionarla la mia app si aprirà ma ignora l'immagine. Si scopre che l'uri che ottengo da intent.getData() è nullo e non riesco a capire perché.

Sto facendo qualcosa di sbagliato? Sto dimenticando qualcosa? Se devi sapere, sono in azione Android 2.3 utilizzando la galleria CoolIris fornita con esso.

risposta

22

L'Uri che si desidera è nel pacchetto. Ho provato sotto il codice e può ottenere l'Uri dell'immagine come content://media/external/images/media/1750

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

Maggiori informazioni si può vedere il ACTION_SEND

+0

Questo è esattamente quello che mi serviva. Grazie! Quindi, la documentazione di Google è errata o ho letto male qualcosa? – ziritrion

+0

Vedere il documento ACTION_SEND, spiega l'input che dovresti mettere a fuoco. – dreamtale