【问题标题】:external storage: world-readable AND private?外部存储:世界可读且私有?
【发布时间】:2019-02-14 00:15:00
【问题描述】:

我对@9​​87654321@ 外部storage 感到困惑:它是世界可读的,但同时可以在上面保存应用程序私有文件?这不是冲突吗?

本页介绍了 Android 上可用的不同数据存储选项: 1 - 内部文件存储:在设备文件系统上存储应用程序私有文件。 2 - 外部文件存储:将文件存储在共享的外部文件系统上。这通常用于共享的用户文件,例如照片。 3 - 共享偏好:将私有原始数据存储在键值对中。 4 - 数据库:将结构化数据存储在私有数据库中。
除了外部存储上的某些类型的文件外,所有这些选项都适用于应用私有数据——其他应用自然无法访问这些数据。

最后一行表示保存在所有这些选项上的大多数文件都是应用程序私有的,除了外部存储上的某些类型的文件 - 我的理解是,通过Environment.getExternalStoragePublicDirectory() 访问的目录上保存的文件是例外。

但该文档再次声明所有在外部存储上共享的文件都是全球可读的:

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

然后它再次提到可以将应用程序私有文件保存到外部存储:

您还可以将文件保存到应用程序特定目录中的外部存储,当用户卸载您的应用程序时,系统会删除该目录。如果您需要更多空间,这可能是内部存储的有用替代方案,但不能保证此处的文件可访问,因为用户可能会移除存储 SD 卡。这些文件仍然是世界可读的;它们只是保存到不与其他应用共享的位置。

最后一段解释了一些事情,但是如果有人可以详细说明并解释世界可读文件如何是私有的?

【问题讨论】:

    标签: android local-storage storage


    【解决方案1】:

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

    例如:有一个文件夹XYZ,任何人,任何App都可以访问...

    您还可以将文件保存到应用特定目录中的外部存储,当用户卸载您的应用时系统会删除该目录。

    在这里,您的应用特定文件可能存储在应用特定目录中,例如 ExternalCacheDirs (Android/data/com.package.name)

    其他应用无法访问这些文件...

    【讨论】:

      猜你喜欢
      • 2022-10-14
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-06
      • 1970-01-01
      相关资源
      最近更新 更多