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

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

【问题讨论】:

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

标签: android storage file-permissions android-sdcard


【解决方案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!

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-14
        • 1970-01-01
        • 1970-01-01
        • 2011-01-31
        • 1970-01-01
        相关资源
        最近更新 更多