繁体   English   中英

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

[英]How To Access External and internal storage?

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

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

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

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

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

这一点在O'Reilly刚刚发布的Android平台应用程序安全性中进行了详细解释。

您必须编写FileProvider以使用其他应用程序访问特定于应用程序的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM