我们的一位用户报告使用我们的Android应用程序在Android上访问加密SD卡上的数据时出现问题。
他在Galaxy Note 4(SM-N910F)上使用Android 6.0.1。该应用程序将Storage Access Framework与ACTION_OPEN_DOCUMENT_TREE结合使用以访问SD卡数据。 sdcard配置为加密。
只要只涉及应用程序本身,一切正常。可以毫无问题地读取和写入SD卡上的数据。所有这些数据都存储在SD卡上并可以检索。只要我们的应用程序读取了另一个应用程序写入的数据,我们的应用程序就会读取加密数据。此外,当弹出SD卡并使用计算机检查我们的应用程序写入的数据时,数据根本不加密。我们的应用程序只是将明文数据直接写入SD卡。其他应用程序写入的数据已加密。另一个有趣的事情是,重新插入SD卡后,设备似乎加密了我们的应用程序编写的非加密文件。之后我们的应用程序将开始只从SD卡读取加密数据。
当禁用SD卡加密时,一切正常。
所以看起来我们的应用程序使用sdcard,但不知何故绕过配置的SD卡加密。我不确定这是怎么回事。我找不到有关此问题的任何错误报告。这是使用存储访问框架时的预期行为吗?有没有人对如何减轻所描述的问题有任何提示或提示?其他应用程序似乎正好处理SD卡访问。
说明问题:
Apps | Android System
|
#------------# | #--------#
| Our App | <---------------- IO^1 --------------> | |
#------------# | | |
| | SDCard |
#------------# | #----------------------# | |
| Other Apps | <-IO-> | En-/Decryption Layer | <-IO-> | |
#------------# | #----------------------# #--------#
^1
这不应绕过en / / decryption层,但显然会这样做。