在Android中隐藏图片的最佳方法是什么?

5

我刚接触安卓开发...我想知道在安卓中隐藏图片的最佳方法。我有一个应用程序,可以拍照,我希望这张照片只能在我的应用程序中显示。


你可以尝试以某种方式加密图像。有报道称.nomedia在4.0以上版本上无法正常工作。https://dev59.com/Tmgv5IYBdhLWcg3wTvE- - IAmGroot
某些API版本的媒体扫描器存在一些错误,但.nomedia仍然有效。其中一个错误是,在文件夹中存在一些图像后创建.nomedia文件会隐藏未来的图像,但不会隐藏旧的图像,但可以通过强制重新扫描所有媒体(只需删除其数据和缓存即可)来修复它。解决方案甚至更简单,只需在开始将图像存储在文件夹中之前添加.nomedia文件即可防止它们被mediascanner获取。该帖子介绍了如何解决所有这些问题。 - ZhDev
1个回答

4
最好的方法是使用设备的内部存储。根据开发者网站:
“您可以直接在设备的内部存储中保存文件。默认情况下,保存在内部存储中的文件对您的应用程序是私有的,其他应用程序无法访问它们(用户也无法访问)。”
您可以在这里找到所有详细信息:使用内部存储 请记住,有一些事情需要考虑;例如,如果您提到的照片是通过相机意图拍摄的,则必须首先将图像保存在公共文件夹中(即在外部存储中),以使相机正常工作,然后您应该将其移动到内部存储器中(或复制它,然后删除原始文件)。
还有其他方法:
  • 您也可以尝试将图像保存在外部存储器中(可被其他应用程序访问),但在文件名中加上前置点以使它们不可见。但是,如果应用程序知道文件名,则可以访问该文件,并且大多数文件管理器可以显示隐藏的文件。
  • 在文件夹内添加一个“.nomedia”文件,以防止图库显示您的图片。
  • 使用随机字符串而不带扩展名来命名您的文件。

这取决于您是否希望使它们对其他应用程序完全不可访问,或者只是稍微隐藏一下就足够了。


+1但我有一个小疑问,虽然它超出了范围,但希望能够考虑。假设我有一个文件,我将其存储在外部存储器中,并且文件名前面有一个点。这有助于使文件不可见,那么.nomedia文件是什么?在Java代码中创建此文件(以点开头)时应该创建吗? - G_S
在您的外部文件目录中包含一个名为.nomedia的空文件(请注意文件名中的点前缀)。这将防止Android的媒体扫描器读取您的媒体文件并将它们包含在像Gallery或Music这样的应用程序中。基本上,在存储图片的顶层文件夹中包含一个名为.nomedia的单个空文件(第一次访问文件夹或创建文件夹时),这将防止图库显示存储在其中的所有图像。 - ZhDev
1
作为补充说明,(默认)相册也不显示隐藏文件,因此如果您的所有文件都命名为“.image1.jpg”,“.image2.jpg”,“.reallyCoolPic.jpg”,它们都是隐藏的,您就不需要.nomedia文件。 - ZhDev
为了确保其他应用程序无法访问照片,我们需要加密照片文件吗?最好的加密方式是什么? - HendraWD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接