2017-07-28 5 views
0

Ich habe derzeit eine App, in der ich Fotos mache und versuche, sie direkt über die App zu teilen. Das Problem, das ich habe, ist, dass, wenn der Wähler auftaucht und ich einen auswähle, ich einen Fehler-Toast bekomme, der erscheint und sagt, dass "Datei nicht anhängen kann". Dann bringt es mich zurück in die App und alles andere funktioniert noch. Ich gehe davon aus, dass dies bedeutet, dass ich das Bild zuerst speichern muss, aber ich bin mir nicht sicher, ob ich das richtig mache. Ich habe einige Online-Beispiele zum Speichern der Bilder gefunden, bin mir aber nicht sicher, ob dies das Problem ist oder ob die Absicht der Freigabe das Problem ist.Wie kann ich ein Bild teilen, das ich in meiner App aufgenommen habe?

final Button shareButton = (Button) findViewById(R.id.shareButton); 
    shareButton.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      imageView.setDrawingCacheEnabled(true); 
      Bitmap b = imageView.getDrawingCache(); 
      MediaStore.Images.Media.insertImage(getContentResolver(), b, "title", "description"); 
      Intent shareIntent = new Intent(Intent.ACTION_SEND); 
      shareIntent.setType("image/jpeg"); 
      BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView.getDrawable(); 
      Bitmap image = bitmapDrawable.getBitmap(); 
      ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
      image.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 
      File f = new File(Environment.getExternalStorageDirectory() + File.separator + "temp.jpg"); 
      try { 
       f.createNewFile(); 
       FileOutputStream fo = new FileOutputStream(f); 
       fo.write(bytes.toByteArray()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().getPath())); 
      startActivity(Intent.createChooser(shareIntent, "Share Image")); 


     } 
    }); 

Ich habe "Titel" und "Beschreibung" als Platzhalter, bis ich dies zur Arbeit bekommen kann.

+1

den Fehler in Ihrer Frage hinzufügen. – Pipiks

+0

@Pipiks Ich bekomme keinen Fehler in Android Studio oder irgendetwas, meine App stürzt nicht ab. Ein Toast erscheint nur mit der Meldung "Datei kann nicht angehängt werden" und bringt mich dann zurück zum Home-Bildschirm der App, der immer noch normal funktioniert. Das habe ich dem Beitrag hinzugefügt. –

+0

Ok, ich denke, die falsche Zeile ist 'shareIntent.putExtra (Intent.EXTRA_STREAM, Uri.parse (Environment.getExternalStorageDirectory(). GetPath()));' Sie müssen den Bildpfad im zweiten Parameter – Pipiks

Antwort

1

Versuchen Sie zu ersetzen:

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().getPath(‌​))); 

mit:

shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f)); 

This question can help you.

+0

Ja, ich habe das Beispiel in einem anderen Tab geöffnet, während ich das tue und versuche zu sehen, wo meine im Vergleich dazu brechen könnte. Dieser Fix hat für mich funktioniert. Vielen Dank! –

Verwandte Themen