Android Tworzenie rezydentnego pliku wejściowego, który można dołączyć do wiadomości e-mail

Ostateczny cel zostanie wkrótce wyjaśniony.

Chcę utworzyć obiekt pliku i zamiast pobierać dane z prawdziwego zbioru fizycznego, chcę sam zapewnić bufor.

Następnie chcę użyć tego pliku, który tak naprawdę nie istnieje na sdcard lub gdziekolwiek poza moją aplikacją, nadaj mu nazwę i wyślij go pocztą elektroniczną jako załącznik (używając EXTRA_STREAM).

Znalazłem następujący fragment kodu, autorstwa Adriaana Kostera (@adriaankoster), postaNapisz bajt [] do pliku w Javie

<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>

Użyłem go do utworzenia tej funkcji

<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>

a tu utknąłem, bo kiedy go używam:

<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>

Wiem z przykładów, które widziałem, drugi argument powinien być identyfikatorem URI, ale: Jak utworzyćwirtualny URI pasujący do mojego pliku?

EDYTOWAĆ: Opcja dołączania danych bezpośrednio z aplikacji jest ważna dla niektórych rodzajów aplikacji. Mianowicie aplikacje zabezpieczające i bankowe, które nie chcą zbytnio przenosić wrażliwych danych. Z pewnością, jeśli dane nie docierają do karty SD i trafiają bezpośrednio do załącznika do poczty, trudniej jest je wykryć niż w pamięci aplikacji.
To nie jest mój szczególny przypadek, ale chciałem podkreślić, że ta zdolność jest ważna.

questionAnswers(4)

yourAnswerToTheQuestion