studio sincronizar sim recuperar pasar los importar exportar enviar datos cómo correo contactos con android email csv export attachment

sincronizar - recuperar contactos android outlook



Exportación de Android a CSV y envío como adjunto de correo electrónico (5)

Aquí está el código para adjuntar el archivo csv en el correo (su código de trabajo): MyCsvFile.csv "debe estar presente en la memoria interna / externa del teléfono.

Para más información, vea esto: https://stackoverflow.com/a/48643905/8448886

A continuación se muestra el código para adjuntar el archivo csv en el correo:

String csv = (Environment.getExternalStorageDirectory().getAbsolutePath() + "/MyCsvFile.csv"); // Here csv file name is MyCsvFile.csv button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent emailIntent = new Intent(Intent.ACTION_SEND); emailIntent.setType("text/plain"); emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"[email protected]"}); emailIntent.putExtra(Intent.EXTRA_SUBJECT, "subject here"); emailIntent.putExtra(Intent.EXTRA_TEXT, "body text"); File file = new File(csv); Uri uri = Uri.fromFile(file); emailIntent.putExtra(Intent.EXTRA_STREAM, uri); startActivity(Intent.createChooser(emailIntent, "Pick an Email provider")); } });

He visto varios hilos en este sitio que discuten sobre el envío de correo electrónico con archivos adjuntos en Android. Probé todos los métodos discutidos here , here y here .

Estoy creando un archivo csv a través del código y guardo este archivo en el almacenamiento interno de Android. Entonces quiero enviar este archivo como archivo adjunto en un correo electrónico. Bueno, el correo electrónico se está enviando, lo estoy recibiendo sin archivo adjunto. Esto es lo que he hecho.

String columnString = "/"Person/",/"Gender/",/"Street1/",/"PostOfice/",/"Age/""; String dataString = "/"" + currentUser.userName +"/",/"" + currentUser.gender + "/",/"" + currentUser.street1 + "/",/"" + currentUser.poNumber.toString() + "/",/"" + currentUser.age.toString() + "/""; String combinedString = columnString + "/n" + dataString; File file = new File(this.getCacheDir()+ File.separator + "Data.csv"); try { FileOutputStream out = new FileOutputStream(file); out.write(combinedString.getBytes()); out.close(); } catch (IOException e) { Log.e("BROKEN", "Could not write file " + e.getMessage()); } Uri u1 = Uri.fromFile(file); Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Person Details"); sendIntent.putExtra(Intent.EXTRA_STREAM, u1); sendIntent.setType("text/richtext"); startActivity(sendIntent);

Intenté cambiar la configuración de mime a "text / html" y "text / richtext", etc. Pero todavía no he tenido suerte. ¿Alguien puede decirme lo que estoy haciendo mal?


Este Código te ayudará

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); buttonSend = (Button) findViewById(R.id.buttonSend); textTo = (EditText) findViewById(R.id.editTextTo); textSubject = (EditText) findViewById(R.id.editTextSubject); textMessage = (EditText) findViewById(R.id.editTextMessage); buttonSend.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String to = textTo.getText().toString(); String subject = textSubject.getText().toString(); String message = textMessage.getText().toString(); Intent i = new Intent(Intent.ACTION_SEND); i.setType("plain/text"); File data = null; try { Date dateVal = new Date(); String filename = dateVal.toString(); data = File.createTempFile("Report", ".csv"); FileWriter out = (FileWriter) GenerateCsv.generateCsvFile( data, "Name,Data1"); i.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(data)); i.putExtra(Intent.EXTRA_EMAIL, new String[] { to }); i.putExtra(Intent.EXTRA_SUBJECT, subject); i.putExtra(Intent.EXTRA_TEXT, message); startActivity(Intent.createChooser(i, "E-mail")); } catch (IOException e) { e.printStackTrace(); } } }); } public class GenerateCsv { public static FileWriter generateCsvFile(File sFileName,String fileContent) { FileWriter writer = null; try { writer = new FileWriter(sFileName); writer.append(fileContent); writer.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { writer.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return writer; } }

Agregue esta línea en el archivo AndroidManifest.xml :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission


Gracias a todos los que intentaron ayudar ... Después de un día completo, envié un correo electrónico desde mi aplicación con el archivo adjunto ... Este es el código de trabajo ...

String columnString = "/"PersonName/",/"Gender/",/"Street1/",/"postOffice/",/"Age/""; String dataString = "/"" + currentUser.userName +"/",/"" + currentUser.gender + "/",/"" + currentUser.street1 + "/",/"" + currentUser.postOFfice.toString()+ "/",/"" + currentUser.age.toString() + "/""; String combinedString = columnString + "/n" + dataString; File file = null; File root = Environment.getExternalStorageDirectory(); if (root.canWrite()){ File dir = new File (root.getAbsolutePath() + "/PersonData"); dir.mkdirs(); file = new File(dir, "Data.csv"); FileOutputStream out = null; try { out = new FileOutputStream(file); } catch (FileNotFoundException e) { e.printStackTrace(); } try { out.write(combinedString.getBytes()); } catch (IOException e) { e.printStackTrace(); } try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } Uri u1 = null; u1 = Uri.fromFile(file); Intent sendIntent = new Intent(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_SUBJECT, "Person Details"); sendIntent.putExtra(Intent.EXTRA_STREAM, u1); sendIntent.setType("text/html"); startActivity(sendIntent);

Además, si ha montado su tarjeta SDCard en la máquina, este código no funcionará. Sólo uno puede acceder a la tarjeta SD a la vez. Entonces, en ese caso, desmonte su tarjeta SDCard de la computadora e intente ... Gracias al tipo que contestó here También asegúrese de haber comprado el permiso para escribir en un almacenamiento externo en su archivo de manifiesto ...

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

Espero que ayude a alguien ... Gracias por todos los que intentaron ayudar ..


Para los archivos de almacenamiento interno, debe hacer que el archivo sea legible:

shareFile.setReadable (true, false);


Tratar

sendIntent.setType("message/rfc822");