我正在做一个安全的应用程序,用户可以在其中浏览某些文件,并使用手机上显示的应用程序打开它们.所以就目前而言,我的应用程序确实很安全,文件已经很好地加密,但是我有一个重大的中断.确实,我正在使用我的应用程序打开不同类型(pdf,doc,txt,jpg,…)的用户安全文件,因此我正在使用用户手机上的外部应用程序打开它们.但是我的问题在这里,因为要让另一个应用程序打开这些文件,我需要为要使用的应用程序提供一个Android存储位置.
这是我现在正在使用的代码:
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
File fileToOpen = new File(activity.getExternalCacheDir().getAbsolutePath() +
"/" + fileName);
MimeTypeMap mime = MimeTypeMap.getSingleton();
String extension = fileToOpen.getName().substring(
fileToOpen.getName().lastIndexOf(".") + 1);
String type = mime.getMimeTypeFromExtension(extension);
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(fileToOpen), type);
Manager.getActivity().startActivityForResult(intent,
ExplorerActivity.FILE_CLOSED_SUCCESSFULLY);
因此,正如您在我的代码中所看到的,我需要将我的真实文件存储到缓存目录中以将其打开,因此,如果小偷可以访问用户电话,它可以打开存在于此目录中的真实文件,因此我的应用程序是不再安全了.
当然,我将在用户关闭该文件并将其加密后立即删除该普通文件,但是删除并不意味着该文件已从手机中完全删除.在删除之前,我用一些空字节重写,但这不足以确保此文件的安全.
因此,现在,我要从您那里得到的是实现我想要做的一个主意:打开文件而不将其存储到Android硬盘中.
这是我的一些线索:
>用我自己的应用程序打开文件(但是要实现很多,因为文件类型太多,我真的不喜欢开发已经存在的文件)
>找到一个解决方案来打开文件而不将其存储在我的应用程序外部(我的意思是直接使用该文件的字节数组打开文件)
>将文件存储到手机RAM中(我不知道是否可能)
因此,这不是一个详尽无遗的清单,任何其他建议将不胜感激.并且,如果您可以提供有关我提出的一种解决方案的帮助,请不要犹豫.不要犹豫,告诉我我的想法之一是完全不可能的还是错误的.