android - 通过 Intent 共享后删除文件

标签 android file email android-activity delete-file

我试图在通过 android 的 Intent.ACTION_SEND 功能共享临时文件后将其删除。现在我正在为结果开始 Activity ,在 OnActivityResult 中,我正在删除文件。不幸的是,这只有在我用断点调试它时才有效,但是当我让它自由运行并说,通过电子邮件发送文件时,电子邮件没有附件。

我认为正在发生的事情是我的 Activity 是在文件通过电子邮件发送之前将其删除。我不明白的是为什么 onActivityResult 不应该只在其他 Activity 完成后才被调用?

我也试过在 onResume 中删除文件,但没有成功。

有更好的方法吗?

最佳答案

我注意到使用类似方法的相同行为。在查看 logcat 的错误时,我看到 gmail 提示找不到附件。所以,是的,似乎在 gmail 实际读取附件文件之前 Intent 返回。

我还没有找到解决方案,但可能会是这样的:

  • 将文件移动到某个目录,以便我知道这是我决定发送的文件
  • 通过 ACTION_SEND 作为附件发送
  • 在我的开始屏幕 Activity 的下一次恢复时,删除“已发送”目录中早于某个时间范围的文件,该时间范围足以让发送实际发生

选择合适的时间范围可能会很棘手,因为 gmail(或其他 ACTION_SEND 提供程序)可能在建立网络连接之前不会真正读取文件。我认为 24​​ 小时应该是合理的,并且在我的情况下,我正在处理诊断日志,因此如果用户长时间断开网络,过早删除日志并没有真正的危害。

如果你的文件的内容是文本并且它不是大得离谱,一个更简单的方法可能是读取文件的内容并使用 Intent.putExtra(android.content.Intent.EXTRA_TEXT, yourText) 将其内联到正文中的消息。

关于android - 通过 Intent 共享后删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4609129/

相关文章:

android - 加载位图或绘制图形?性能问题

android - 在 Android 中以编程方式设置 APN

java - Files.walkFileTree 使用自定义 FileVisitor 泄漏目录描述符

java - 如何保持用户登录 session ?

java - 使用 tarsos android 库从麦克风流式传输,添加效果并保存到 wav 文件

Python os.open() 无法将 umask 设置为 777(最大 755)

ios - 下载 PDF 并保存到 iPhone 中的 "Files",而不是应用程序数据,Swift

java - RFC822 电子邮件 - Formatter - Android/iOS - 创建没有 session 或主机的 MimeMessage

Azure通信服务电子邮件发送错误

php - 如何在 Laravel 5.5 中发送多封邮件