我的应用程序允许用户创建和修改文件。我希望他们能够将文件作为电子邮件附件发送。所以,我需要先创建并写入一个临时文件,然后将其附加到电子邮件中。然后我想在电子邮件程序完成时删除临时文件。不幸的是,一旦用户点击“发送”,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();
}
}
答案 0 :(得分:0)
在我的应用中,我不会删除临时文件。如果需要空间,Android会通过删除文件来处理它。我会确保你不在SDCard根目录中创建tmp文件,因为它看起来很乱,但除此之外不应该有问题。