Android Создание резидентного входного файла, который можно прикрепить к электронному письму
Конечная цель будет ясна в ближайшее время.
Я хочу создать объект файла и вместо получения данных из реального физического файла я хочу предоставить буфер самостоятельно.
Затем я хочу использовать этот файл, которого на самом деле нет в SDCard или где-либо за пределами моего приложения, дать ему имя и отправить его по электронной почте в виде вложения (используя EXTRA_STREAM).
Я нашел следующий фрагмент кода, написанный Адрианом Костером (@adriaankoster), постЗапись байта [] в файл в Java
<code>// convert byte[] to File ByteArrayInputStream bis = new ByteArrayInputStream(bytes); ObjectInputStream ois = new ObjectInputStream(bis); File fileFromBytes = (File) ois.readObject(); bis.close(); ois.close(); System.out.println(fileFromBytes); </code>
Я использовал это, чтобы создать эту функцию
<code>private File fileFromBytes(byte[] buf) { File f = null; try { ByteArrayInputStream bis = new ByteArrayInputStream(buf); ObjectInputStream ois = new ObjectInputStream(bis); f = (File) ois.readObject(); bis.close(); ois.close(); } catch (Exception e) {} return f; } </code>
и вот где я застрял, потому что, когда я использую это:
<code>// When sent as body the mail is sent OK // emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, dump()); // When I try to attach the mail is empty emailIntent.putExtra(android.content.Intent.EXTRA_STREAM, fileFromBytes(dump().getBytes())); </code>
Я знаю из примеров, которые я видел, что вторым аргументом должен быть URI, но: как мне создатьvirtual URI, чтобы соответствовать моему файлу?
EDIT:
Возможность прикрепления данных непосредственно из приложения важна для приложений определенного типа. А именно, безопасность и банковские приложения, которые не хотят перемещать конфиденциальные данные слишком много. Конечно, если данные не попадают на SD-карту и отправляются непосредственно в почтовое вложение, их труднее прослушать, чем в памяти приложения.
Это не мой конкретный случай, но я хотел бы отметить, что эта возможность важна.