Экспорт android в csv и отправка в виде вложения электронной почты

Я видел несколько потоков на этом сайте, где обсуждался вопрос о отправке электронной почты с вложениями в android. Я пробовал все описанные здесь методы, здесь и здесь .

Я создаю csv-файл по коду и сохраняю этот файл в встроенной памяти Android. Затем я хочу отправить этот файл в виде вложения по электронной почте. Ну, письмо отправляется, я получаю его без приставки. Это то, что я сделал.

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

Я попробовал изменить настройки mime на «text / html» и «text / richtext» и т. Д. Но пока не повезло. Может ли кто-нибудь сказать мне, что я делаю неправильно?

Solutions Collecting From Web of "Экспорт android в csv и отправка в виде вложения электронной почты"

Спасибо всем, кто пытался помочь. После полного дня я отправил электронное письмо с моим приложением с приложением. Это рабочий код ..

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

Также, если вы установили свой телефон SDCard в устройство, этот код не будет работать. Только один может получить доступ к SDCard за один раз. Поэтому в этом случае отключите SDCard от компьютера и попробуйте. Спасибо парню, который ответил здесь. Также убедитесь, что вы купили разрешение на запись во внешнее хранилище в файл манифеста …

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

Надеюсь, это поможет кому-то … Спасибо всем, кто пытался помочь ..

Пытаться

 sendIntent.setType("message/rfc822"); 

Этот код поможет вам

 @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; } } 

Добавьте эту строку в файл AndroidManifest.xml :

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

Для файлов внутреннего хранилища вам необходимо сделать файл доступным для чтения:

ShareFile.setReadable (true, false);