Android:将外部存储器上的文件夹设为私有或受保护

Posted

技术标签:

【中文标题】Android:将外部存储器上的文件夹设为私有或受保护【英文标题】:Android: make a folder on external memory private or protected 【发布时间】:2012-03-08 20:41:34 【问题描述】:

我想将外部存储器(可能在 SD 卡上)上的文件夹设为私有或受保护,以便只有我的应用程序/进程可以访问该文件夹。

我可以这样做吗?如果有请告诉我?

我的要求: 我可以使用 android 的内存来存储我的应用程序的文件/数据,但这可能会减少手机的内存(这可能会导致没有足够空间安装其他应用程序等问题)

【问题讨论】:

【参考方案1】:

外部存储上的数据不能保密。它是全球可读的,如果启用 USB 大容量存储,用户可以对其进行更改。

引自 developer.android.com:

每台 Android 兼容设备都支持共享的“外部存储”,您可以使用它来保存文件。这可以是可移动存储介质(例如 SD 卡)或内部(不可移动)存储。保存到外部存储的文件是全球可读的,并且可以在用户启用 USB 大容量存储以在计算机上传输文件时进行修改。

【讨论】:

【参考方案2】:

你不能。你可以压缩文件夹并存储为密码压缩文件。

【讨论】:

哇!超级酷,苏尼尔怎么能这样?你能分享一些关于这方面的信息吗【参考方案3】:

从 API 9 开始,您拥有用于此目的的

File.setWritable(boolean, boolean)

也适用于读/执行操作。看看链接

【讨论】:

谢谢,但我必须从 API 7 开始支持。 我有一个解决方案——如果我们可以在外部存储器上创建一个名称以“。”开头的文件夹。那么该文件夹对用户不可见(例如:.myAppPrivateFolder),则满足我的要求。怎么说!!! 用户看不到该文件夹​​,但该文件夹仍然存在...恕我直言,这不是一个解决方案..但似乎没有解决方案来设置文件夹的权限,因为 api 9.. 所以试试隐藏文件夹并希望最好:) 如果用户没有权限改变这个抽象路径名的访问权限,操作会失败。只有自建文件才会这样。 @OneWorld 这就是文档所述。有什么问题吗?【参考方案4】:

引用自 android 文档:

public abstract File getExternalFilesDir (String type)

Since: API Level 8 返回目录的绝对路径 外部文件系统(在某处 Environment.getExternalStorageDirectory()) 应用程序可以在其中 放置它拥有的持久性文件。

这些文件是私有的 应用程序,并且通常不作为媒体对用户可见。这是 像 getFilesDir() 一样,这些文件将在 应用程序已卸载[...]

来源:http://developer.android.com/reference/android/content/Context.html#getExternalFilesDir(java.lang.String)

所以基本上你会在你的 SD 卡中获得一个私人(分类)文件夹。

将此与 Blackbelt 的答案结合使用以获得更好的效果。

【讨论】:

您错过了文档中的一个重要事实:这些文件没有强制执行安全性。例如,任何持有 WRITE_EXTERNAL_STORAGE 的应用程序都可以写入这些文件。

以上是关于Android:将外部存储器上的文件夹设为私有或受保护的主要内容,如果未能解决你的问题,请参考以下文章

如何在 crate 中将 Rust 项目设为公开,但在其外部设为私有?

我们啥时候应该考虑使用私有或受保护?

将 Github 存储库设为私有但希望显示公共消息

Android14.2 外部文件存储和读取

Android 10:我都有哪些选择可以将外部存储上的文件保存到名为“/sdcard/my-app/”的目录中

Android——Android10的分区存储(Scoped Storage)