如何从图库中隐藏照片并将其存储在我的应用程序中

Posted

技术标签:

【中文标题】如何从图库中隐藏照片并将其存储在我的应用程序中【英文标题】:how to hide photos from gallery and store it in my app 【发布时间】:2012-10-27 11:58:18 【问题描述】:

我正在开发一个 android 应用程序,它将从图库中选择一些照片并隐藏它们,

我可以从图库中选择特定图片并将其存储在我的应用程序中并从图库中删除它,但是如果他在 sdcard 中打开我的应用程序文件夹,一个人可以看到这些图片,所以我如何存储它们,即使一个人检查我的 sdcard 那么他应该无法检测到这些图片吗?

【问题讨论】:

你能告诉我你是如何解决你的问题的,我也面临同样的问题 @user3233280 :检查 Guykun 的答案。它可以带你走得更远。 我也必须使用共享意图共享该图像,所以我将如何共享加密图像? 首先要分享为什么要隐藏?如果您想共享隐藏的图像,请在共享之前对其进行解密。在单独的线程中开始解密图像并将解密的文件存储在原始位置并共享位置或文件本身。 我想要你的同样要求,即用户不能看到我的应用程序以外的图像,这就是我问的原因 【参考方案1】:

唯一安全的方法是自己加密图像数据并删除原始文件,只留下您的应用程序能够解密文件。

查看How to encrypt file from SD card using AES in Android? 了解如何做到这一点。

作为附加步骤,您还可以使用任意数量的其他答案来隐藏加密文件

【讨论】:

你能回复我如何加密图像吗?【参考方案2】:

如果您想阻止 Gallery 显示应用文件夹中的图像,您可以在该文件夹中放置一个名为 .nomedia 的文件。

来源:https://***.com/a/6713863/450534

如果您想隐藏文件夹以防止出现在文件管理器中,请确保您的文件夹以 句点 (.) 开头。例如,如果文件夹名为 myfolder,则应将其创建为 .myfolder

来源:https://***.com/a/5878270/450534

请注意,用户可以更改文件管理器的设置以显示隐藏的文件和文件夹。对此,没有解决办法。

【讨论】:

感谢您的回复,但我的 android 手机中的文件管理器会显示 '.'前缀文件夹,所以任何人都可以在该文件夹中看到我的图片,那么即使在文件管理器中也如何使图片不可见? @MAHANTESH:如答案末尾所述,文件管理器可以根据其设置显示隐藏文件夹。在这种情况下,我认为 Guykun 为您提供了最佳解决方案。 是的,我会尝试加密并将其存储到我的应用程序文件夹中并从 sdcard 中删除该图像,但不知道它是否适用于图像,因为加密和解密是.txt 文件 @MAHANTESH:嗯,首先,该帖子用于加密图像,OP 指出它对他有用。我不明白为什么它也不适合你。 ;-) 试一试,看看效果如何。 :好吧,我尝试了 Guykun 的加密方法,但是加密一堆选定的图像需要很多时间,没有更好的方法来实现它,我的意思是,而不是加密一堆图像,加密文件夹?我也试过了,但它给了我一个错误。,我什至评论了 Guykun 提到的帖子,但没有回应。【参考方案3】:

如果你想隐藏文件夹,只需添加 '.'作为文件夹名称的前缀。

【讨论】:

感谢您的回复,但我担心的是,即使我创建了一个 '.'前缀文件夹,使该文件夹中的图片在图库中不可见,其他人可以浏览我的SD卡并查看我的图片,那么我该如何防止呢?是否有任何用于加密图像的代码sn-p?【参考方案4】:

如果您想阻止 Gallery 显示应用文件夹中的图像,您可以在该文件夹中放置一个名为 .nomedia 的文件。

如果您想隐藏文件夹以防止出现在文件管理器中,请确保您的文件夹以句点 (.) 开头。例如,如果文件夹名为 myfolder,则应将其创建为 .myfolder

File sdCard = Environment.getExternalStorageDirectory(); File dir = new File(sdCard.getAbsolutePath() + "/.myFolder" );

【讨论】:

这就像临时解决方案,如果用户更改设置以在文件管理器中显示隐藏文件,则用户将能够查看所有隐藏的图像,解决此问题的最佳方法是对其进行加密并存储加密文件被隐藏,所以即使用户看到隐藏文件夹也看不到图片【参考方案5】:

看到这个。 多一步执行。他们也在隐藏数据和文件夹。

How to hide a folder in sdcard in android

【讨论】:

【参考方案6】:

使用你的sd卡文件夹路径

Environment.getExternalStorageDirectory().toString()+context.getPackageName+"//data//data//"+"(.folderName)";

这将为您的图像提供最大的安全性,如果用户手机未植根,则此路径从各个方面都是安全的。

【讨论】:

感谢您的回复,这里我们只是创建了许多子文件夹,但我认为这对正在探索我的 sdcard 的人来说并没有什么不同,最终他将能够看到我的照片:(跨度>

以上是关于如何从图库中隐藏照片并将其存储在我的应用程序中的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的应用程序中显示 Facebook 照片库?

为什么从Android应用程序下载的视频没有显示在图库中?

刚从相机拍摄并通过从图库中挑选显示的Android裁剪图像

允许以编程方式访问图库照片

如何从手机图库中获取照片?

如何获取存储在设备中的所有图像并将它们显示为 iPhone sdk 中的图库