0

在我的应用程序中,我允许用户使用内容提供程序与外部应用程序共享文件。我的文件已加密,因此在我可以共享其中一个文件之前,我需要对其进行解密并将其存储在应用程序内部存储中。之后,我实现了自定义内容提供程序,它可以使用给定的 URL 指向文件并返回 ParcelFileDescriptor 实例。

出于安全问题,我想在外部应用程序使用该文件或用户取消操作后从内部存储中删除该文件。

编辑:我与之共享文件的外部应用程序是第 3 方应用程序。

所以我的问题是:我应该什么时候删除文件,或者你知道我可以收听的任何事件或我可以附加到文件的处理程序吗?

感谢您的所有回复。

附带的问题是:您是否知道我不必将文件存储在内部存储中,而是直接将其作为流发送到外部应用程序的方式?

4

2 回答 2

1

我的问题的答案是使用管道 ParcelFileDescriptor。

代码在 CommonsWare 的 The Busy Coder's Guide to Android Development 中进行了描述。

解决方案基于: https ://github.com/nandeeshwar/Pfd-Create-Pipe

我设法实施的实际解决方案是: https ://github.com/commonsguy/cw-omnibus/tree/master/ContentProvider/Pipe

于 2013-04-11T12:11:51.263 回答
0

如果它是您的外部应用程序,您可以留下一个加密文件并在 Intent 中传递密钥。如果是第 3 方外部应用程序,您必须找出该应用程序可以接受的内容。

您可能还阅读了有关服务的信息——也许它们提供了您想要的东西。

至于“何时”,我建议在 onResume() 中启动一个清理任务。(除非您决定使用服务。)

于 2013-04-09T09:00:26.017 回答