android - enviar - Envío de correo electrónico con archivo adjunto desde la carpeta de activos
como enviar un documento de word por correo gmail (4)
Puede usar el siguiente código para lograr su objetivo y puede cambiar la cadena codificada de acuerdo con sus requisitos.
String filename="contacts_sid.vcf";
File filelocation = new
File(Environment.getExternalStorageDirectory().getAbsolutePath(), filename);
Uri path = Uri.fromFile(filelocation);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
// Here you can set the type to ''email''
emailIntent .setType("abc.xyz.cursor.dir/email");
String to[] = {"[email protected]"};
emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
// For the attachment
emailIntent .putExtra(Intent.EXTRA_STREAM, path);
// the mail subject
emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Find Attachments with email");
startActivity(Intent.createChooser(emailIntent , "Sending email..."));
//EMAIL SENDING CODE FROM ASSET FOLDER
email = editTextEmail.getText().toString();
subject = editTextSubject.getText().toString();
message = editTextMessage.getText().toString();
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.setType("file/html");
emailIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("content://com.example.deepa.xmlparsing/file:///android_assets/Combination-1.html"));
startActivity(Intent.createChooser(emailIntent, "Send email using"));
Finalmente, obtengo el archivo de la carpeta de activos (Combination-1.html).
Se está haciendo
Excepción del archivo de error en tiempo de ejecución.
¿Hay alguna otra manera de enviar archivos adjuntos?
Cree un objeto de archivo de su archivo de carpeta de activos y adjunte este objeto a su Intención de correo electrónico.
Y como se menciona en la pregunta, el archivo de error de tiempo de ejecución no se encuentra, esto puede deberse a que la URL "archivo: /// android_asset /" no apunta a un directorio en particular, solo WebView lo utiliza para abordar los activos. Tiró eso from
puede abrir esto como un flujo de entrada y convertir este InputStream
en File
in = new BufferedReader(new InputStreamReader(activity.getAssets().open(myfile.pdf)));
Enviar este objeto de archivo en el correo electrónico de la siguiente manera.
Intent intent = new Intent(Intent.ACTION_SEND ,Uri.parse("mailto:"));
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT, "Card Set ");
intent.putExtra(Intent.EXTRA_TEXT, "");
intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(file));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
activity.startActivity(intent);
Donde Intent.ACTION_SEND
utiliza para enviar correo electrónico, Intent.EXTRA_STREAM
para los archivos adjuntos con correo electrónico. puede tener múltiples Intent.EXTRA_STREAM
en un solo intento para referir múltiples adjuntos con intent.setAction(Intent.ACTION_SEND_MULTIPLE);
.
intent.setType(String mimeType)
entrada intent.setType(String mimeType)
representa los datos de tipo MIME que desea obtener a cambio de la intención de disparo (en este caso, la instancia).
image/jpeg
audio/mpeg4-generic
text/html
audio/mpeg
audio/aac
audio/wav
audio/ogg
audio/midi
audio/x-ms-wma
video/mp4
video/x-msvideo
video/x-ms-wmv
image/png
image/jpeg
image/gif
.xml ->text/xml
.txt -> text/plain
.cfg -> text/plain
.csv -> text/plain
.conf -> text/plain
.rc -> text/plain
.htm -> text/html
.html -> text/html
.pdf -> application/pdf
.apk -> application/vnd.android.package-archive
La forma más sencilla de enviar un correo electrónico es crear una Intención de tipo ACTION_SEND:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.putExtra(Intent.EXTRA_SUBJECT, "Test");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{recipient_address});
intent.putExtra(Intent.EXTRA_TEXT, "Attachment test");
Para adjuntar un solo archivo, agregue algunos datos extendidos a Intent:
intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File("/path/to/file")));
intent.setType("text/html");
O use Html.fromHtml () para compilar contenido html:
intent.putExtra( Intent.EXTRA_TEXT,
Html.fromHtml(new StringBuilder()
.append("<h1>Heading 1</h1>")
.append("<p><a>http://www.google.com</a></p>")
.toString()));
Para múltiples archivos adjuntos:
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("text/html");
intent.putExtra(Intent.EXTRA_SUBJECT, "Test multiple");
intent.putExtra(Intent.EXTRA_TEXT, "multiple attachments");
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{recipient_address});
ArrayList<Uri> uris = new ArrayList<Uri>();
uris.add(Uri.fromFile(new File("/path/to/first/file")));
uris.add(Uri.fromFile(new File("/path/to/second/file")));
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
Termina con una llamada a startActivity () intención de pasar.
No puede compartir el archivo de carpeta de recursos con otra aplicación sin ContentProvider . Puede enviar un archivo al que se puede acceder para cada aplicación. Al igual que algunos whare en la memoria interna del teléfono o en la tarjeta SD.
Compartiendo Activos Marque Esta Respuesta de @CommonsWare
O lea su archivo de texto y use @RonTLV Responda y envíe por correo.
O Copie el archivo en la memoria intenal y agregue al envío de lanzamiento. Espero que esta respuesta ayude.