Bild aus ImageView teilen

  • Antworten:3
Heretsu
  • Forum-Beiträge: 37

18.02.2015, 11:22:44 via Website

Hallo, ich versuche in meiner App ein vom Benutzer aus der Gallerie ausgewähles Bild(wird in eine ImageView geladen) mit WhatsApp und Co zu verschicken. Ich habe aber das Problem, dass keine Bilddatei gesendet wird. In Whatsapp zum Beispiel wird mir zwar das Fenster zum Senden angezeigt, aber da ist kein Bild drin sondern nur eine schwarze Fläche. Die Problembeschreibung ist wahrscheinlich schwer verständlich aber ich weiß nicht wie ich es sonst beschreiben kann. Hier ist mein Code für das Versenden:

share.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            image.setDrawingCacheEnabled(true);
            Bitmap b = image.getDrawingCache();
            Images.Media.insertImage(getApplicationContext().getContentResolver(), b,"test", "description");
            Intent shareIntent = new Intent();
            shareIntent.setAction(Intent.ACTION_SEND);
            Uri uri = Uri.parse("/DCIM/Camera/" + b);
            shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
            shareIntent.putExtra(Intent.EXTRA_TEXT, "Hi");
            shareIntent.setType("image/*");
            startActivity(Intent.createChooser(shareIntent, "Send your image"));}});

Hat jemand eventuell eine Idee wo mein Fehler liegt?

MfG

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.02.2015, 11:49:23 via Website

Veränderst du in deiner App das bild in der imageView?
Die erklärung warum es nicht geht ist relativ einfach:

 Bitmap b = image.getDrawingCache(); //Du erstellst ein BitmapObject aus dem deiner ImageView
        Images.Media.insertImage(getApplicationContext().getContentResolver(), b,"test", "description"); //Erstelle eine Vorschau
        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        Uri uri = Uri.parse("/DCIM/Camera/" + b); //Hier list der Fehler! Du versuchst das bitmap Objekt an den Pfad zu hängen. Das funtioniert nicht!! Somi funktioniert es auch im weiteren Verlauf nicht.
        shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
        shareIntent.putExtra(Intent.EXTRA_TEXT, "Hi");
        shareIntent.setType("image/*");
        startActivity(Intent.createChooser(shareIntent, "Send your image"));}});

Um das jetzt zu lösen, ist es wichtig zu wissen ob du in deiner App das Bild veränderst:
Wenn nein musst du irgendwoher den String Pfad des orginalbildes holen und dann als uri benutzen.
Wenn ja musst du erst das bild aus deiner ImageView seichern und dann kannst du es sharen:
http://stackoverflow.com/questions/21799934/share-and-save-image-of-imageview

PS: Warum machst du das? Uri uri = Uri.parse("/DCIM/Camera/" + b); Das Bitmap objekt wird an einen String angehängt. Intern wird Bitmap#toString() aufgerufen, welches dann nichts mehr gescheites ausgibt weil man ein Bitmap nicht in einen String umwandeln kann.
LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Heretsu
  • Forum-Beiträge: 37

18.02.2015, 13:10:19 via Website

Hallo Pascal, ja, in der App wird das Bild durch einen ColorFilter verändert. Da das Bild während dem Vorgang nicht gespeichert wird und ich keine Methode gefunden habe es ohne zu speichern zu teilen, hab ich die Methode mit "Bitmap b..." Benutzt. In den meisten Beispielen war statt "b" sowas wie image.jpg im Befehl: Uri uri = Uri.parse("/DCIM/Camera/b); . Ich dachte, dass die Bilddatei so als "b" gespeichert wird und mit dem Befehl auf das Bild zugegriffen wird.

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.02.2015, 13:19:27 via Website

Nein das funktioniert nicht. Wei du schon sagtest speicherst du das Bild nicht somit kannst du das ao auch nich sharen.
Schau dir mal meinen Link oben an, da wird das speichern beschrieben.

LG

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten