2010-08-24 14 views

risposta

105

Questo è effettivamente fatto con Intents.

Per la condivisione di un'immagine, come nella foto ad esempio, sarebbe qualcosa di simile:

Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("image/jpeg"); 

share.putExtra(Intent.EXTRA_STREAM, 
    Uri.parse("file:///sdcard/DCIM/Camera/myPic.jpg")); 

startActivity(Intent.createChooser(share, "Share Image")); 

Per il testo si può usare qualcosa di simile:

Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("text/plain"); 
share.putExtra(Intent.EXTRA_TEXT, "I'm being sent!!"); 
startActivity(Intent.createChooser(share, "Share Text")); 
+6

È possibile condividere l'immagine indicata dall'URL http: share.putExtra (Intent.EXTRA_STREAM, Uri.parse ("http://helios.gsfc.nasa.gov/image_mag_stamp.jpg")); ? Non riesco a farlo funzionare. – sinek

+1

Il secondo non funziona con l'applicazione di messaggistica. –

+0

@Second La versione di testo visualizza più opzioni dall'emulatore? Ho provato quello che hai suggerito e si avvia immediatamente all'applicazione sms integrata. Preferirei vedere qualcosa di più esplicitamente come la foto menzionata nella domanda. – thegrinner

4

Sì. È necessario fornire un'attività con un filtro intent che può gestire oggetti di tipo MIME image/jpeg (ad esempio, se si desidera supportare la condivisione di immagini JPEG) e un'azione di presumibilmente ACTION_SEND.

Molte delle app Android integrate sono open source, è possibile controllare il file manifest dell'applicazione di messaggistica per vedere quali filtri di intent sta utilizzando.

+0

In realtà, non credo che tutte le app Android integrate siano open-source, solo il sistema operativo. –

+2

Sicuramente non quelli che usano i servizi di Google (Gmail, Maps, ecc.) - Mi riferivo a quelli più basilari, quello che viene fornito con l'emulatore. Riformero. – EboMike

6

stavo avendo problemi con il risposta accettata Quello che ha funzionato per me è stato la creazione di un file dal percorso, quindi l'analisi l'URI del file, come:

Uri.fromFile(new File(filePath)); 

invece di

Uri.parse(filePath) 

Solo nel caso qualcuno sta avendo lo stesso problema.

+3

La tua soluzione ha risolto anche il mio problema piuttosto che quello accettato. Sai perché la risposta accettata non funziona? – RestInPeace

+1

@RestInPeace probabilmente dipende da dove risiede il tuo file sul file system. Nell'esempio hanno dato un file simile a una stringa: /// ... se il tuo percorso non era nello stesso formato, l'uso di Uri.parse non avrebbe funzionato. – DiscDev

+0

In realtà per me 'Uri.parse (filePath)' ha funzionato in alcune app, (condivisione di Whatsapp per esempio, e Dropbox) ma non è riuscito con Instagram, Gmail e Facebook ad esempio. 'Uri.fromFile (new File (filePath))' funziona come un incantesimo, tranne che in Gmail, che ancora non funziona, ma riesco a comporre l'e-mail e posso vedere che il file è collegato correttamente. – Olaia