it-swarm.com.de

android Export nach CSV und Senden als E-Mail-Anhang

Ich habe auf dieser Site mehrere Threads gesehen, die über das Senden von E-Mails mit Anhängen in Android diskutieren. Ich habe alle hier diskutierten Methoden ausprobiert hier , hier und hier .

Ich erstelle eine CSV-Datei über Code und speichere diese Datei in einem internen Speicher von Android. Dann möchte ich diese Datei als Anhang in einer E-Mail senden. Nun, die E-Mail wird gesendet, ich bekomme sie ohne Anhang. Das habe ich getan.

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

Ich habe versucht, die MIME-Einstellungen in "Text/HTML" und "Text/Richtext" usw. zu ändern. Aber noch kein Glück. Kann mir jemand sagen, was ich falsch mache?

19
Krishnabhadra

Vielen Dank für alle, die versucht haben zu helfen .. Nachdem ich einen ganzen Tag verbracht habe, habe ich eine E-Mail mit meiner Anlage mit Anhang gesendet .. Dies ist der Arbeitscode ..

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

Wenn Sie die SDCard Ihres Telefons in das Gerät eingelegt haben, funktioniert dieser Code nicht. Nur eine kann gleichzeitig auf die SDCard zugreifen. Also mounten Sie in diesem Fall Ihre SD-Karte vom Computer und versuchen Sie es ... Danke an den Mann, der hier .. geantwortet hat.

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

Hoffe, es hilft jemandem ... Danke für jeden, der versucht hat zu helfen ..

50
Krishnabhadra

Dieser Kodex wird Ihnen helfen

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

Fügen Sie diese Zeile in AndroidManifest.xml-Datei hinzu:

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

Versuchen

sendIntent.setType("message/rfc822");
3
Jeremy Edwards

Für interne Speicherdateien müssen Sie die Datei lesbar machen:

shareFile.setReadable (true, false);

2
pstoppani

Hier ist der Code zum Anhängen einer CSV-Datei in Mail (Sein Arbeitscode): MyCsvFile.csv "sollte sich in Ihrem internen/externen Speicher des Telefons befinden.

Weitere Informationen finden Sie hier: https://stackoverflow.com/a/48643905/8448886

Nachfolgend finden Sie den Code zum Anhängen der CSV-Datei in Mail:

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"));
            }
        });
0
Abhishek kumar