Android Criando um arquivo de entrada residente na memória que pode ser anexado a um email

O objetivo final ficará claro em breve.

Eu quero criar um objeto de arquivo e, em vez de obter dados de um arquivo físico real, eu quero fornecer o buffer eu mesmo.

Então, eu quero usar este arquivo, que realmente não existe no sdcard ou em qualquer lugar fora do meu aplicativo, dar-lhe um nome e enviá-lo por e-mail como um anexo (usando o EXTRA_STREAM).

Eu encontrei o seguinte pedaço de código, por Adriaan Koster (@ adriaankoster), o postEscreva byte [] para o arquivo em 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>

Eu usei para criar essa função

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

e aqui é onde eu estou preso, porque quando eu uso:

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

Eu sei de exemplos que eu vi o segundo argumento deve ser um URI, mas: Como faço para criar umvirtual URI para ajustar meu arquivo?

EDITAR: A opção de anexar dados diretamente do aplicativo é importante para determinados tipos de aplicativos. Ou seja, aplicativos de segurança e bancários que não querem mover muito os dados confidenciais. Certamente, se os dados não chegam ao sdcard e vão diretamente para um anexo de e-mail, é mais difícil farejar do que dentro da memória do aplicativo.
Este não é o meu caso específico, mas queria salientar que essa capacidade é importante ter.

questionAnswers(4)

yourAnswerToTheQuestion