2017-01-03 2 views
0

У меня есть файл расширения android apk и есть некоторые PDF-файлы. В официальной документации они получают доступ к файлам внутри .obb через Inputstream. Я могу получить доступ к файлам внутри .bb через входной поток.Прикрепить входной поток по электронной почте

Теперь я хочу приложить один из файлов к электронному письму с намерением. E-Mail Intent отлично работает с файлами из активов, поэтому проблема связана с Inputstream.

Как я могу прикрепить PDF-файл в письме непосредственно с .obb?

+0

Возможный дубликат [Как отправить электронное письмо с вложенным файлом в Android] (http://stackoverflow.com/questions/9974987/how-to-send-an-email-with-a-file -attachment-в-андроида) – StarWind0

ответ

0

решаемые его!

Вам необходимо преобразовать входной поток в файл Temorary, получить Uri этого файла и прикрепить его к намерению электронной почты.

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..."));