如何访问外部和内部存储?

时间:2012-01-13 14:06:33

标签: android

我实际上想要访问android系统上的文件。我设法读取android的外部存储器中的文件和目录。 我的问题是:

  1. 如何访问内部存储的目录和文件(特别是视频,pics在android中运行的所有应用程序)。
  2. 哪里存储了安装在内部存储中的每个应用程序的数据?
  3. 是否可以传输内部存储器中的数据(从内部存储器到外部存储器?
  4. 我读到外部存储是世界可读的?这是什么意思?(如果创建一个应用程序,那么这个应用程序可以访问安装在外部存储中的所有文件?)

2 个答案:

答案 0 :(得分:4)

默认情况下,应用无法访问其他应用存储的数据。权限应用于内部存储,使应用程序写入的数据无法在该应用程序外部访问(您的应用程序无法读取其他应用程序编写的任何内容)。这可以更改,其中应用程序可以为ITS OWN数据指定不同的权限;基本上,应用程序可以允许其他人读取其数据。但是,如果某个应用未明确设置其权限以允许此操作,则其他应用无法访问其数据。这是Android安全/隔离模型的基本原则,在Linux /内核级别完成,因为每个应用程序在其自己的Linux UID下运行,并且在文件系统中设置权限,仅允许UID访问应用程序的目录结构(组)默认情况下,世界权限设置为0。

如果你有权访问设备上的root(root用户手机和你的应用程序以root权限运行),这一切都会消失,但我们应该考虑你的问题超出范围。

外部(SD卡)存储的不同之处在于它被认为是免费的,并且不会在那里应用权限(这最初是由于SD中通常使用的文件系统不支持权限)。任何应用程序通常都可以读取任何其他应用程序写入SD卡的任何内容,除非原始应用程序执行某些操作来保护它(加密等)。

这一点在O'Reilly刚刚出版的Application Security for the Android Platform中有详细解释。

答案 1 :(得分:0)

您必须使用其他应用编写FileProvider来访问应用特定文件。