Android:从我的应用程序发送包含附件的电子邮件时出

时间:2011-05-02 16:52:51

标签: android

我的应用程序允许用户创建和修改文件。我希望他们能够将文件作为电子邮件附件发送。所以,我需要先创建并写入一个临时文件,然后将其附加到电子邮件中。然后我想在电子邮件程序完成时删除临时文件。不幸的是,一旦用户点击“发送”,gmail应用就会响应结果代码;如果我在收到结果代码后立即删除该文件,则不会发送任何附件。

可能出现其他问题并且附件不是由于其他原因而发送的,但我非常确定我的评估是正确的,因为如果我注释掉mEmailTmpFile.delete()调用,下面的代码可以正常工作。如果我在Thread.sleep(4000)之前做mEmailTmpFile.delete()之类的非常不受欢迎的事情,它也可以正常工作。

电子邮件发送完毕后,是否有通知?或者关于我应该如何解决这个问题的任何其他建议?

//send an email...

File externalStorage = Environment.getExternalStorageDirectory();
String sdcardPath = externalStorage.getAbsolutePath();
mEmailTmpFile = new File(sdcardPath + "/" +  name );

//do some other to ensure unqiueness and then write to the file...

//all done writing, send email

Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("application/zip");
sendIntent.putExtra(Intent.EXTRA_SUBJECT, name);
sendIntent.putExtra(Intent.EXTRA_TEXT, "File attached.");
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://"+ mEmailTmpFile.getPath()));
startActivityForResult(Intent.createChooser(sendIntent, "Email"), REQUESTCODE_EMAIL);

public synchronized void onActivityResult(int reqCode, int resultCode, Intent data)
{
   if (reqCode == REQUESTCODE_EMAIL)
   {
    mEmailTmpFile.delete();
    }
}

1 个答案:

答案 0 :(得分:0)

在我的应用中,我不会删除临时文件。如果需要空间,Android会通过删除文件来处理它。我会确保你不在SDCard根目录中创建tmp文件,因为它看起来很乱,但除此之外不应该有问题。