2013-06-18 12 views
16

ho questo codice:Come allegare un bitmap quando si lancia ACTION_SEND intento

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEND); 
startActivity(intent); 

che lancerà con successo un'applicazione di messaggistica su Android.

Ma come posso allegare un oggetto Bitmap all'avvio dell'intento?

Ho letto http://developer.android.com/reference/Android/content/Intent.html, la cosa armadio per quello che mi serve è EXTRA_STREAM, in questo modo:

intent2.putExtra (Intent.EXTRA_STREAM, _uri);

Ma nel mio caso, ho un riferimento dell'oggetto Bitmap, non un URI di una Bitmap.

Per favore dimmi cosa fare per collegare un oggetto Bitmap?

+0

vuoi inviare immagine ?? – Riser

+0

Salvare quella bitmap e fornire l'uri .... – Triode

+0

@segi :: Sì, voglio inviare l'immagine. – KCRaju

risposta

25
String pathofBmp = Images.Media.insertImage(getContentResolver(), bitmap,"title", null); 
    Uri bmpUri = Uri.parse(pathofBmp); 
    final Intent emailIntent1 = new Intent( android.content.Intent.ACTION_SEND); 
    emailIntent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    emailIntent1.putExtra(Intent.EXTRA_STREAM, bmpUri); 
    emailIntent1.setType("image/png"); 

Dove bitmap è l'oggetto bitmap che deve essere memorizzato nella scheda SD. e poi usare quell'URI per shareimage.

+0

qui stiamo ottenendo l'URI dell'immagine usando bitmap ... giusto? – KCRaju

+0

sì, proprio ..... – Riser

+3

Images.Media.insertImage (getContentResolver(), bitmap, "title", null); return null –

-11
String cc=trlink.toString(); 
Intent share = new Intent(Intent.ACTION_SEND); 
share.setType("text/plain"); 
share.putExtra(Intent.EXTRA_TEXT,cc); 
startActivity(Intent.createChooser(share,"Share Text")); 
0

Prova questo può aiutare a:

ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
yourbitmapimagename.compress(CompressFormat.PNG, 0, bos); 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_SEND); 
intent.setType("*/*"); 
intent.putExtra(Intent.EXTRA_STREAM, bos.toByteArray()); 
startActivity(intent); 
+5

Genera un ClassCastException: "byte [] non può essere trasmesso su android.os.Parcelable" –

+0

Penso che sia necessario importare java.io.ByteArrayOutputStream nella classe. – Nas

+0

Questo non funziona. – kkazakov

20

è necessario salvare l'immagine bitmap in un file. puoi salvarlo nella cache dell'app

private void shareBitmap (Bitmap bitmap,String fileName) { 
    try { 
     File file = new File(getContext().getCacheDir(), fileName + ".png"); 
     FileOutputStream fOut = new FileOutputStream(file); 
     bitmap.compress(CompressFormat.PNG, 100, fOut); 
     fOut.flush(); 
     fOut.close(); 
     file.setReadable(true, false); 
     final Intent intent = new Intent( android.content.Intent.ACTION_SEND); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file)); 
     intent.setType("image/png"); 
     startActivity(intent); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 
+1

Il più importante in questo esempio: 'file.setReadable (true, false); 'senza di esso, altre Apps (che potresti essere il risultato di startActivity) non saranno in grado di leggere l'immagine. Tutte le altre risposte hanno trascurato questo .. – micha

+0

come possiamo cancellare dopo aver condiviso ?? –

Problemi correlati