Android: возможно ли прикрепить файл к электронной почте без записи на SD? - PullRequest
10 голосов
/ 02 декабря 2009

Мое приложение хранит данные локально в собственной базе данных SQLite, и я хочу разрешить пользователям экспортировать эти данные, отправляя им по электронной почте файл .csv. Для этого я генерирую .csv из базы данных и записываю его на SD-карту, а затем прикрепляю к электронному письму:

StringBuilder csv = generateFile();
writeFile(csv.toString(),"file.csv");
Intent email = new Intent(android.content.Intent.ACTION_SEND);
email.setType("application/octet-stream");
email.putExtra(android.content.Intent.EXTRA_STREAM, Uri.parse("file://sdcard/file.csv"));

Который все прекрасно работает. Что мне интересно, так это то, можно ли сначала пропустить этап записи на SD и напрямую прикрепить данные.

1 Ответ

3 голосов
/ 02 декабря 2009

Даже если это возможно, я рекомендую против этого.

Intents, используемые для запуска действий, будут удерживаться (потенциально) довольно долгое время - до тех пор, пока рассматриваемое действие является «живым» и, возможно, может быть возвращено (например, обратно в стек, поскольку пользователь набрал телефонный звонок при написании письма, а затем полчаса общался в чате по SMS).

Более того, Intents копируется между процессами, как часть этого. Например, почтовый клиент будет работать не так, как ваше приложение.

По обеим этим причинам вам нужно, чтобы ваш Intents был маленьким. Единственная альтернатива Uri контенту - это иметь контент непосредственно в самом дополнении ... и этот CSV-файл предположительно может стать довольно большим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...