Android:附加到电子邮件应用程序后何时删除文件?

时间:2019-12-22 01:22:19

标签: android

我的应用在临时存储区中创建了一个文件,并将一些数据写入其中。

exportFile = new File(this.getFilesDir(), filename);

然后允许用户选择一个电子邮件程序来附加和发送文件。

我开始一项活动以取得成果。

startActivityForResult(Intent.createChooser(emailIntent, "Send eMail..."), SEND_EMAIL_ACTIVITY);

在onActivityResult()事件中,我正在删除文件。

exportFile.delete();

但是,由于时间原因,我想有时文件会被附加并发送,有时文件没有被附加,并且电子邮件到达时没有附件。

如果我从onActivityResult()中删除delete(),则附件始终会到达。

问题:我应该何时/如何去删除此临时文件,以免影响电子邮件的发送?

这是我建立电子邮件意图的方式:

    // Send email with attachment
    String to[] = {emailAddressEditText.getText().toString()};
    Intent emailIntent = new Intent(Intent.ACTION_SEND);
    emailIntent.setType("message/rfc822");
    emailIntent.putExtra(Intent.EXTRA_EMAIL, to);
    emailIntent.putExtra(Intent.EXTRA_SUBJECT,
            "Birder's Diary Mobile: " + submitLocation.getText().toString());
    emailIntent.putExtra(Intent.EXTRA_TEXT, emailBody.toString());
    Uri path = null;
    try {
        path = FileProvider.getUriForFile(this, getPackageName() + ".provider", exportFile);
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        sightingsCursor.close();
        return;
    }
    emailIntent.putExtra(Intent.EXTRA_STREAM, path);
    emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    // Let user pick client
    try {
        startActivityForResult(Intent.createChooser(emailIntent, "Send eMail..."),
                SEND_EMAIL_ACTIVITY);
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_LONG).show();
        sightingsCursor.close();
        return;
    }

1 个答案:

答案 0 :(得分:-1)

如何在发送电子邮件之前删除旧文件,例如在onCreate或临时删除文件(如果日期不相同)?在应用程序启动时