Mail mit Anhang versenden

  • Antworten:6
Moeldius
  • Forum-Beiträge: 6

04.10.2018, 18:28:53 via Website

Hallo zusammen,

habe nun schon unzählige Foren durch und finde leider immer noch nicht meinen Fehler, könnt ihr hier vielleicht mal drüber schauen und helfen?

if (isExternalStorageWritable() && checkPermission((Manifest.permission.WRITE_EXTERNAL_STORAGE))) {

            try{
                String URI = "file:///NeuerOrdner/Testfile.htm";
                Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null));
                intent.putExtra(Intent.EXTRA_CC, "");
                intent.putExtra(Intent.EXTRA_BCC, "");
                intent.putExtra(Intent.EXTRA_SUBJECT, "Testmail");
                intent.putExtra(Intent.EXTRA_TEXT, mailtext );
                intent.putExtra(Intent.EXTRA_STREAM,uri);
                startActivity(Intent.createChooser(intent, "E-Mail Programm wählen:"));

Danke schon mal für eure Hilfe

Gruß

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

04.10.2018, 18:42:57 via App

Hallo Moeldius,
was genau tut denn nicht?
Öffnet sich die Mail App mit der passenden Adresse?
Fehlt nur der Anhang?
Existiert der Anhang im Dateisystem wirklich?
Vermutlich ist der Pfad aber relativ zum Root d.h. du musst den Pfad der SD nehmen.

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

Hilfreich?
Moeldius
Kommentieren
Moeldius
  • Forum-Beiträge: 6

04.10.2018, 19:30:36 via Website

Hallo Pascal,

danke für die Antwort.
Das war eben etwas in Eile da habe ich ja die Hälfte vergessen.

Die Mail App öffnet sich, Empfänger, Betreff und Mailtext passen auch.
Es geht um die Datei, diese liegt im Internen Speicher im Ordner "NeuerOrdner".
Laut Details der Testfile.htm unter Android heißt der Pfad "/Internet Speicher/NeuerOrdner".

Bin ich hier falsch mit "file://NeuerOrdner/Testfile.htm"??

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

04.10.2018, 19:49:49 via App

Ich denke schon.
Schau dir das mit deinem Dateiexplorer an, und suche die Datei, dann hast du auch deinen Pfad.
Pass aber auf, wenn die App auf verschiedenen Geräten laufen soll, der Pfad kann immer anders sein

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

Hilfreich?
Moeldius
Kommentieren
Moeldius
  • Forum-Beiträge: 6

04.10.2018, 20:45:23 via Website

(thinking)Hast du eine Ahnung wie der Pfad lautet?
Ich versuche hier gerade alle möglichen Varianten durch.
Im ES Datei Explorer sagt er mir:
/storage/emulated/0/NeuerOrdner/
bzw auch
/sdcard/NeuerOrdner/

Daraus mache ich dann:
file:///storage/emulated/0/NeuerOrdner/Testfile.htm
*file:///sdcard/NeuerOrdner/Testfile.htm*

Aber leider das gleiche Ergebnis. Ich verzweifele an mir selbst :D(thinking)

— geändert am 04.10.2018, 20:56:59

Hilfreich?
Kommentieren
Moeldius
  • Forum-Beiträge: 6

04.10.2018, 21:03:40 via Website

Fehler gefunden! :D

Statt
*intent.putExtra(Intent.EXTRA_STREAM,uri);*
ist folgendes richtig:
intent.putExtra(Intent.EXTRA_STREAM,Uri.parse(uri));

Das kombiniert mit:
file:///sdcard/NeuerOrdner/Testfile.htm

Danke für deinen Gedankenstoss.

Komplett:

if (isExternalStorageWritable() && checkPermission((Manifest.permission.WRITE_EXTERNAL_STORAGE))) {

        try{
            String URI = "file:///sdcard/NeuerOrdner/Testfile.htm";
            Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.fromParts("mailto", "", null));
            intent.putExtra(Intent.EXTRA_CC, "");
            intent.putExtra(Intent.EXTRA_BCC, "");
            intent.putExtra(Intent.EXTRA_SUBJECT, "Testmail");
            intent.putExtra(Intent.EXTRA_TEXT, mailtext );
            intent.putExtra(Intent.EXTRA_STREAM,Uri.parse(uri));
            startActivity(Intent.createChooser(intent, "E-Mail Programm wählen:"));

— geändert am 04.10.2018, 21:04:48

Hilfreich?
Kommentieren
swa00
  • Forum-Beiträge: 3.704

04.10.2018, 21:04:00 via Website

... und warum nutzt du nicht erst mal die Standardfunktionen (e.g. Context.getFilesDir .....) ?
Dadurch hast du erst mal die Basis deines Devices.

Bsp:

File appDir = mContext.getFilesDir(null);
String path = appDir.toString()+ "/ordner/Testfile.html";

Und natürlich auf CaseSensitive und auf Permissons achten (Ab >M = UserRequest)

EDIT : Ich war zu langsam :-)

— geändert am 04.10.2018, 21:08:29

Liebe Grüße - Stefan
[ App - Entwicklung ]

Hilfreich?
Pascal P.Moeldius
Kommentieren