2013-01-24 48 views
0

我必须做一些东西。我正在使用网络服务下载图像,成功下载每张图像后,我使用“AES”加密算法对图像进行加密。我已经成功完成了加密。但是,无论何时打开设备图库,我都能看到下载的图像由我加密。我不想那样。我想保护那些可以阻止图库访问的图像。如何保护下载的图像Android

我明白整个过程here.When我存储下载库捕获该图像后,每个图像并存储到它的缓存,这样在我的加密过程可能是库填充的图像。

- >我的加密过程:下载图像 - >存储到SD卡 - >加密图像 - >删除实像

但这不是从库中删除也。

因此总之我想确保图像可以防止从图库访问。让我知道你对我的流程的最佳建议是对还是错?我可以对它做一些改变吗?或者让你有好主意而不是我的过程?

感谢您的最佳建议。

+0

您是否尝试过下载图像并在内存中加密它?考虑使用CipherInputStream和/或CipherOutputStream – Frohnzie

回答

4

您必须添加一个空文件到你的图片文件夹,名为.nomedia。这将阻止MediaScanner对该文件夹中的图像编制索引。

但是,ICS上存在一个错误,使得这个问题稍微困难一些。在ICS上,您的文件夹必须有.nomedia目前的,然后才会向其添加图像,否则图像将被编入索引。

另外,稍较低柔顺的选择是用一个点(类似于.foldername)开始你的文件夹名称。由于Android是基于UNIX的,因此这会使其成为隐藏文件夹,因此不会由MediaScanner扫描它。

+0

大哥!感谢您的大力帮助!确切地得到我需要的! – Jai

+0

我需要你的帮助! 4.0以上,我可以创建文件夹.nomedia,但每当我的应用程序要下载图像,图库即时获取该图像。像下载1..2..3 ..在图库1..2..3中。增加。因此,在成功下载SD卡后,我们无法看到该图像,但能够看到图像 – Jai

+0

在较新版本的Android中存在一个错误。在将任何图像添加到文件夹之前,请确保.nomedia文件存在。 –

0

我有一个合适的解决方案。这也适用于更高版本。

您可以使用下面的目录保持私营与应用程序的私有文件夹:

String mDirectory = getPackageManager().getPackageInfo("com.example.myapp", 0).applicationInfo.dataDir; 

您可以将您的私人数据存储到这个包。它将阻止访问并阻止来自Gallery的索引。所以你不必担心它的加密过程也:)。可能是这个文件夹不会提供太多的空间。但至少它会帮助我们。

+0

考虑到你正在存储图像,它将占用大量的空间。它可能会导致很多用户卸载您的应用程序。 –

+0

@RaghavSood:你说得对,我确实这么认为。这可能是导致问题的原因。但是只有当你存储高端数据时才会引起问题。如果你打算用少量的存储来存储数据,那当然不会造成问题。这样对吗? – Jai

+0

内部存储空间可以从大约70MB到大于1 GB。它由所有安装的应用程序共享,不仅用于内部数据,还用于他们自己的代码安装。在某些设备上,它很快耗尽 –

0

听起来像下面的解决办法可能对所有版本 - (Storing videos, images and audio files that can not be accesses by others

对于这一点,你必须存储在外部存储设备上的数据与创建的文件夹名称以。(点),那么这个文件夹是隐藏从FileExplorer。在这个文件夹中,您需要创建一个.nomedia文件并放置您的图像和视频,然后图像和视频不能被Gallery.nomedia文件夹中的用户看到。文件不能被该图库读取。