web-dev-qa-db-fra.com

Comment attacher un bitmap lors du lancement d'Action_Send Intention

J'ai ce code:

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

Qui va lancer avec succès une application de messagerie sur Android.

Mais comment puis-je joindre un objet bitmap lors du lancement de l'intention?

J'ai lu - http://developer.androïd.com/reference/andrroid/content/intent.html , la chose du placard à ce dont j'ai besoin est extra_stream, comme ceci:

intention2.putextra (intention.extra_stream, _uri);

Mais mon cas, j'ai une référence de bitmap objet, pas une URI d'un bitmap.

S'il vous plaît dites-moi quoi faire pour attacher un objet bitmap?

18
KCRaju
    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");

Où bitmap est votre objet bitmap qui doit être stocké dans la carte SD. puis utiliser cette URI pour actionnaire.

26
Sagar Maiyad

Vous devez d'abord enregistrer le bitmap dans un fichier. Vous pouvez l'enregistrer dans le cache de l'application

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();
    }

}
22
Gil SH

Essayez cela, cela peut vous aider:

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); 
1
Nas