2017-01-03 1 views
0

Ich habe eine Android-apk-Erweiterungsdatei und darin befinden sich einige PDFs. In der offiziellen Dokumentation greifen sie über Inputstream auf die Dateien innerhalb der .obb zu. Ich bin in der Lage, über den Eingabestream auf die Dateien innerhalb der .obb zuzugreifen.Attach Eingangsstrom an E-Mail

Jetzt möchte ich eine der Dateien an eine E-Mail mit Intent anhängen. Der E-Mail-Intent funktioniert einwandfrei mit den Dateien aus den Assets. Das Problem ist daher, dass der Inputstream angehängt wird.

Wie kann ich die PDF direkt von der .obb in die Mail anhängen?

+0

Mögliches Duplikat von [Wie in Android eine E-Mail mit einem Dateianhang senden] (http://stackoverflow.com/questions/9974987/how-to-send-an-email-with-a-file -Anbindung-in-Android) – StarWind0

Antwort

0

es gelöst!

Sie müssen den Inputstream in eine Temporäre Datei konvertieren, die URI dieser Datei holen und sie an die E-Mail-Absicht anhängen.

Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("application/pdf"); 

    try { 
     ZipResourceFile expansionFile = new ZipResourceFile("Path to .obb file"); 
     InputStream fileStream = expansionFile.getInputStream("Path inside .obb"); 

     String downloadordner = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString(); //used for temp storage 

     File tempFile = new File(downloadordner+"/"+"filename.pdf"); 
     tempFile.deleteOnExit(); 
     FileOutputStream out = new FileOutputStream(tempFile); 
     IOUtils.copy(fileStream, out); 

     Uri theUri = Uri.fromFile(tempFile); 

     i.putExtra(Intent.EXTRA_STREAM, theUri); 
     startActivity(Intent.createChooser(i, "PDF versenden...")); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(preisliste.this, "Es wurde kein E-Mail Client gefunden.", Toast.LENGTH_SHORT).show(); 
    } 
    catch (IOException e) 
    { 
     Log.v("Datei nicht gefunden","Main Expansion"); 
    } 
0

See this SO answer

String filename="yourfile"; 
File filelocation = new File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename); 
Uri path = Uri.fromFile(filelocation); 
Intent emailIntent = new Intent(Intent.ACTION_SEND); 
// set the type to 'email' 
emailIntent .setType("vnd.android.cursor.dir/email"); 
String to[] = {"[email protected]"}; 
emailIntent .putExtra(Intent.EXTRA_EMAIL, to); 
// the attachment 
emailIntent .putExtra(Intent.EXTRA_STREAM, path); 
// the mail subject 
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject"); 
startActivity(Intent.createChooser(emailIntent , "Send email..."));