java - 离线读取和删除加密文件,无需使用 Activity 结果

标签 java android encryption

我正在开发一个应用程序,用于在线下载文件,将它们保存在内部存储上,并在安装后读取它们。此外,我的客户要求对文件进行加密。

实际上我已经开发了一个工作版本,可以执行以下操作:

下载过程: 1) 将文件下载到内部存储上 2)从原始文件创建一个新的加密文件,并将其保存在内部文件夹中 3)删除原来的

开通流程: 1)从加密文件创建解密文件并将其保存在内部存储中 2)使用正确的查看器打开解密的文件 3) 一旦用户停止阅读解密文件,就将其删除。

这是我的问题: 我实际上正在使用 ActivityForResult 和 Intent ACTION VIEW 从​​内部存储打开解密的文件。 首先,我不喜欢在 ACTION VIEW Intent 上使用 ActivityForResult,因为它是由外部应用程序处理的,其次,如果用户从查看器中离开应用程序,则用户会保留解密的文件。

如何从解密的文件创建一个临时文件,该文件将在用户读完后销毁?

下载的文件需要离线可读,因此不能选择流式传输。

最佳答案

编辑:解决方案

唯一的解决方案是控制Intent,这样ActivityForResult就可以在这里安全地使用。因此,查看器必须在应用程序中实现。如果这些文件不是常见文件(如我的情况),您应该开发自己的阅读器/查看器。这使您可以完全控制应用程序正在执行的操作以及文件何时被删除。

关于java - 离线读取和删除加密文件,无需使用 Activity 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46069793/

相关文章:

java - 如何在保存到磁盘之前验证 ZipFile 的内容

java - GridView 加载大图片资源慢

android - 具有膨胀的 LinearLayout 的意外 LayoutParams

java - 无法在 Android 上使用 HttpURLConnection 将数据发布到站点

azure - Service Fabric - 可靠的字典加密模型

c++ - zip文件使用的加密算法是什么?

java - 在 JUnit 4.11 中结合 @ClassRule 和 @Rule

java - Beagleboard XM 上的 Android 4.0 Ice Cream Sandwich 出现 "MediaPlayer went away with unhandled events"错误

java - 难以理解这里的递归

vb.net - AES加密/解密