without - Condivisione di bitmap tramite Android Intent




second activity in android studio (3)

Citando la documentazione :

Un contenuto: URI contenente un flusso di dati associato all'intento, utilizzato con ACTION_SEND per fornire i dati inviati.

b , quindi, non dovrebbe essere un Bitmap , ma piuttosto un Uri punta a un Bitmap , servito da un ContentProvider . Ad esempio, è possibile scrivere Bitmap in un file, quindi utilizzare FileProvider per servirlo.

Nella mia app per Android, ho una bitmap (ad esempio b) e un pulsante. Ora quando clicco sul pulsante, voglio condividere la bitmap. Sto facendo uso del codice seguente all'interno del mio onClick() per ottenere ciò: -

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/png");
intent.putExtra(Intent.EXTRA_STREAM, b);
startActivity(Intent.createChooser(intent , "Share"));

Mi aspettavo un elenco di tutte le applicazioni che sono in grado di gestire questo intento ma non ottengo nulla. Non ci sono elenchi di app né errori in Android Studio. La mia applicazione viene semplicemente impiccata per qualche tempo e poi si chiude.

Ho controllato la bitmap e va bene (non è nulla).

Dove sto andando storto?


Come dichiarato da CommonsWare, è necessario ottenere l'URI nella bitmap e passarlo come Extra.

String bitmapPath = Images.Media.insertImage(getContentResolver(), bitmap,"title", null);
Uri bitmapUri = Uri.parse(bitmapPath);
...
intent.putExtra(Intent.EXTRA_STREAM, bitmapUri );

ImageButton capture_share = (ImageButton) findViewById(R.id.share);
capture_share.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View view) {

    String bitmapPath = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap,"title", null);
    Uri bitmapUri = Uri.parse(bitmapPath);

        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("image/png");
        intent.putExtra(Intent.EXTRA_STREAM, bitmapUri);
        startActivity(Intent.createChooser(intent, "Share"));



  }
});




intentfilter