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-карту и отправляются непосредственно в почтовое вложение, их труднее прослушать, чем в памяти приложения.
Это не мой конкретный случай, но я хотел бы отметить, что эта возможность важна.

Ответы на вопрос(4)

Ваш ответ на вопрос