防止其他应用访问我的应用存储在 sd 卡中的图像

Posted

技术标签:

【中文标题】防止其他应用访问我的应用存储在 sd 卡中的图像【英文标题】:Prevent other apps to access my app's image stored in sd card 【发布时间】:2013-11-27 07:30:08 【问题描述】:

在我的应用程序中,我创建了一个位图并将其保存为 SD 卡中的 JPG 图像。我不希望任何其他应用程序使用此图像。这在android中可能吗?任何帮助将不胜感激。

【问题讨论】:

Android 不允许其他应用使用您的数据。您无需执行任何操作。 但是图片是公开的知道吗? @Anirudh 这仅在内部存储中,不在 SD 卡上 我猜root手机中的文件管理器可以访问其中的任何文件? 【参考方案1】:

方法 1 – 创建一个 .nomedia 文件。

使用任何文件浏览器/管理器应用程序(例如 Astro 文件管理器或文件专家),导航到您要隐藏的目录并创建一个名为“.nomedia”的空文件。这样做的一种方法是:

将现有的文本 (.txt) 甚至图像 (.jpg/.jpg) 文件复制到所述目录, 在文本编辑器中打开它(按住文件并从出现的上下文菜单中选择适当的选项), 删除其内容(按住文本,全选并删除),保存更改并退出, 将其重命名为“.nomedia”(再次按住文件并从其上下文菜单中选择重命名)。 此方法禁用对所选目录的媒体扫描,导致库在启动时完全跳过该目录。

【讨论】:

【参考方案2】:

除非您对文件进行加密,否则您无法阻止对 SD 卡上文件的访问。 (参见外部存储部分here)

保存到外部存储的文件是世界可读的,并且可以 用户在启用 USB 大容量存储传输时修改 电脑上的文件。

请考虑将其放入internal storage,然后您的应用程序将是唯一可以访问它的应用程序。

另一个选项,如果您只需要从媒体扫描仪中隐藏它,则可以给它一个以点开头的名称 (.myfile.jpg),这将使它成为一个隐藏文件。 (如果您想以这种方式隐藏多个文件,请包含一个名为 .nomedia 的空文件(请参阅 Saving files that should be shared),这样您就不必全部重命名)

【讨论】:

【参考方案3】:

使用特定于应用程序的数据库并将图像保存在那里,而不是将其保存在 SD 卡上。然后只有您的应用程序可以访问。我这样做是为了加密我的应用程序中的图像,只需保存一个 BASE64 编码的图像字符串,在其上进行加密,反之亦然。如果您保存图像文件的字节数组,这也将起作用。

【讨论】:

【参考方案4】:

存储图像时,将文件的扩展名更改为其他内容,以免其他应用程序识别它。但是当您想在应用中使用它时,请将扩展名改回 .bmp 或 .jpg!

【讨论】:

这并不能阻止任何事情——只是混淆了访问权限 检查这个,它可能对你有帮助addictivetips.com/mobile/…

以上是关于防止其他应用访问我的应用存储在 sd 卡中的图像的主要内容,如果未能解决你的问题,请参考以下文章

重命名 SD 卡中的文件夹

将音频文件存储在 SD 卡中

通过AsyncTask下载图像并将其显示在Imageview中而不存储在SD卡中

Android:尝试将图像保存到 SD 卡时应用程序退出

如何从服务器下载文件并将其保存在 Android SD 卡中的特定文件夹中?

在 Android 上获取 TIFF 图像的单像素