Динамическое вложение электронной почты Android с расширением файла - PullRequest
1 голос
/ 02 ноября 2011

Как вы прикрепляете файл, который находится в памяти, например строку, с расширением файла .txt и т. Д. Я попытался сохранить строку в внутренней памяти, а затем прикрепить ее, и я не могу заставить ее работатьхотя я бы предпочел решение первой проблемы.

    Intent i = new Intent(Intent.ACTION_SEND);
    i.setType("plain/text");

    try {
        FileOutputStream fos = openFileOutput("data.enw", Context.MODE_PRIVATE);
        fos.write(export_text.getBytes());
        fos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    i.putExtra(Intent.EXTRA_STREAM, Uri.parse(new File("data.enw").toString()));
    i.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"MyEmail"});
    i.putExtra(android.content.Intent.EXTRA_SUBJECT, "Attachment");
    i.putExtra(android.content.Intent.EXTRA_TEXT, "Import the attachment");
    startActivity(Intent.createChooser(i, "E-mail"));

[Редактировать] Приведенный ниже код работает, однако для него требуется SD-карта.Есть ли лучший способ сделать это.

Intent i = new Intent(Intent.ACTION_SEND);
i.setType("plain/text");

File data = null;

try {
data = File.createTempFile("data", ".enw");
FileOutputStream out = new FileOutputStream(data);
out.write(export_text.getBytes());
out.close();

} catch (IOException e) {
e.printStackTrace();
}

i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(data));
i.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"MyEmail"});
i.putExtra(android.content.Intent.EXTRA_SUBJECT, "Attachment");
i.putExtra(android.content.Intent.EXTRA_TEXT, "Import the attachment");
startActivity(Intent.createChooser(i, "E-mail"));
...