Android 中的文件权限
Posted
技术标签:
【中文标题】Android 中的文件权限【英文标题】:File permissions in Android 【发布时间】:2010-10-08 23:28:21 【问题描述】:我来这里只是想问一些可能非常简单的问题,我正在使用文件、FileOutputStream 和 FileInputStream,但我只想获取/设置一些来自文件的道具,我的意思是,文件的所有者,读/写权限等。
环顾四周,我找到了 FileDescriptor 和 FilePermission 类,但我不知道我可以使用它们,所以我寻求一些帮助;实际上,我正在使用 File 类中的方法 setReadOnly() ,但这正是我现在要寻找的方法。
【问题讨论】:
【参考方案1】:这里有几个问题:
-
默认情况下,应用程序可以不受限制地访问自己的文件(读/写/删除/“执行”...无论执行意味着什么),但不能访问任何其他应用程序的文件。
android 很难与其他应用程序及其数据进行交互,除非通过 Intents。 Intent 不适用于权限,因为您依赖于接收 Intent 的应用程序来执行/提供您想要的;他们可能不是为了告诉任何人他们的文件权限而设计的。有很多方法可以绕过它,但只有当应用程序被设计为在同一个 JVM 中运行时(即您设计为一起在同一个 JVM 中运行的应用程序)
您的应用程序可以为它自己的文件获取和设置权限,但不能为其他任何人这样做。据我所知,SDK 中没有明确的所有权概念,因此您无法找到文件的所有者。
Android 基于 Linux 内核,但它不是 Linux。它已针对在移动设备上运行进行了大量优化。如果您有一台应用程序只能在其自己的沙箱中运行的机器,您可以删除权限和所有权等内容,并获得更小、更快的操作系统。您的文件拥有的唯一权限是您在其上放置(并强制执行)的权限。其他应用程序的文件不存在。
【讨论】:
【参考方案2】:Android 使用标准 Java API 来处理文件和文件权限。 Here's a a page discussing permissions in Java.
基本上,您需要做的就是获取文件的 FilePermission 对象,然后使用 newPermissionCollection 从 FilePermission 对象获取 PermissionCollection () 方法,然后在该集合中添加或删除项目。
【讨论】:
嗨 DrJokepu,感谢您的帮助,我正在阅读有关 FilePermission 类的信息,但它的作用是从 java 授予文件系统的权限;但我真正需要的是查看文件的权限状态,即从文件系统到 java。再次感谢您【参考方案3】:嗯...如果您只想查看权限,您不能只使用“ls -l”吗?
【讨论】:
是的,您可以从本机代码使用相同的底层文件系统操作,尽管某些目录可能没有必要的权限来允许“其他”用户 ID 生成列表。以上是关于Android 中的文件权限的主要内容,如果未能解决你的问题,请参考以下文章