【发布时间】:2011-06-15 00:46:15
【问题描述】:
我的应用程序允许用户创建和修改文件。我希望他们能够将文件作为电子邮件附件发送。因此,我需要首先创建并写入一个临时文件,然后将其附加到电子邮件中。然后我想在电子邮件程序完成时删除临时文件。不幸的是,一旦用户单击“发送”,gmail 应用程序就会以结果代码进行响应;如果我在收到结果代码后立即删除文件,则不会发送附件。
可能有其他问题出现,并且由于其他原因未发送附件,但我很确定我的评估是正确的,因为如果我注释掉 mEmailTmpFile.delete() 调用,下面的代码可以正常工作。如果我在mEmailTmpFile.delete() 之前立即做一些非常不受欢迎的事情,例如Thread.sleep(4000),它也可以正常工作。
电子邮件发送完成后是否会收到通知?或者关于我应该如何解决这个问题的任何其他建议?
//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();
}
}
【问题讨论】:
-
不符合this answer。
标签: android