Android 何时删除Intent.SEND中使用的临时文件以获取附加电子邮件?

Android 何时删除Intent.SEND中使用的临时文件以获取附加电子邮件?,android,email,attachment,android-contentprovider,Android,Email,Attachment,Android Contentprovider,我们在Android设备上生成一个临时文件,并将其附加到电子邮件中。我们使用自定义内容提供商将该文件提供给电子邮件应用程序。问题是电子邮件应用程序多次访问文件,而不是一次,直到它最终发送电子邮件(例如,每次它写草稿时,我们都会收到请求) 这使得很难知道何时删除该临时文件 有什么安全的方法可以知道我们的电子邮件何时发送,这样我们就可以清洁设备而不留下垃圾?(定期删除似乎也不正确,因为手机可能会暂时删除草稿文件夹中的电子邮件) 非常感谢你的帮助 是的,是的,我知道这是一岁的孩子。但我们遇到了同样的事

我们在Android设备上生成一个临时文件,并将其附加到电子邮件中。我们使用自定义内容提供商将该文件提供给电子邮件应用程序。问题是电子邮件应用程序多次访问文件,而不是一次,直到它最终发送电子邮件(例如,每次它写草稿时,我们都会收到请求)

这使得很难知道何时删除该临时文件

有什么安全的方法可以知道我们的电子邮件何时发送,这样我们就可以清洁设备而不留下垃圾?(定期删除似乎也不正确,因为手机可能会暂时删除草稿文件夹中的电子邮件)


非常感谢你的帮助

是的,是的,我知道这是一岁的孩子。但我们遇到了同样的事情

我们所做的是使用ContentProvider.openFile()按需合成数据,并将其直接流式传输到电子邮件应用程序,而不是将其写入临时文件。为此,您需要从ContentProvider的query()方法返回符合OpenableColumns的行;然后,电子邮件应用程序将返回openFile(),您将返回一个ParcelFileDescriptor


不幸的是,这一切都有点黑魔法,我们发现许多应用程序都弄错了——DropBox有点问题,而现在(我注意到你的问题的原因)我们正在与三星专有的蓝牙前端作斗争。为什么供应商不能袖手旁观我不知道…

我想尝试一下你的方法。我是Android的新手,我正在启动我的第一个ContentProvider。我很难理解a)如何将数据直接传输到电子邮件应用程序,B)如何符合OpenableColumns。你能详细介绍一下你是如何完成上述任务的吗?我真的不能再多说了---ContentProvider.openFile()是一个神奇的地方。然而,我应该指出,自从我写了这篇文章,我们实际上已经完全放弃了这种方法。只是不够可靠;太多的第三方应用程序不支持它,当他们支持它时,他们经常会出错。现在我们只需将文件写入一个临时目录,返回一个指向它们的file:URI,然后让后台进程在它们一周大时删除它们。