samsung - Android: ¿es posible adjuntar un archivo al correo electrónico sin escribir en SD?
mover aplicaciones a sd moto c (1)
Incluso si es posible, recomiendo no hacerlo.
Intents
utilizadas para iniciar actividades se mantendrán durante (potencialmente) un tiempo bastante largo, siempre que la actividad en cuestión esté "viva" y pueda ser devuelta (por ejemplo, de vuelta a la pila, porque el usuario tomó un teléfono llamar mientras redacta el correo electrónico, luego chateó por SMS durante media hora).
Además, los Intents
se copian entre procesos un poco como parte de esto. Por ejemplo, el cliente de correo electrónico estará en un proceso diferente al de su aplicación.
Por estos dos motivos, debe mantener sus Intents
pequeños. La única alternativa a un Uri
para el contenido sería tener el contenido directamente en el extra en sí ... y ese archivo CSV, presumiblemente, podría ser un poco grande.
Mi aplicación almacena datos localmente en el DB de SQLite nativo, y quiero permitir que los usuarios exporten estos datos enviándose un archivo .csv por correo electrónico. Para hacer esto estoy generando el .csv de la base de datos y escribiéndolo en la tarjeta SD, luego adjuntándola a un correo electrónico:
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"));
Lo cual todo funciona bien. Lo que me pregunto, sin embargo, es si es posible omitir primero el paso de escribir en SD y adjuntar directamente los datos.