原生android系统官网 source.android.com,存储  |  Android 开源项目  |  Android Open Source Project…「建议收藏」

原生android系统官网 source.android.com,存储  |  Android 开源项目  |  Android Open Source Project…「建议收藏」Android一直在不断发展,可支持各种存储设备类型和功能。所有Android版本均支持配有传统存储(包括便携式存储和模拟存储)的设备。便携式存储是指物理介质(如SD卡或USB设备),用于进行临时数据传输/文件存储。物理介质可以随设备一起保留更长时间,但并非固定在设备上,可以移除。自Android1.0开始,SD卡已可用作便携式存储;Android6.0增加了对USB…

大家好,又见面了,我是你们的朋友全栈君。

21ab96cc3cfbfa06eb9891be93fd22b2.png

Android 一直在不断发展,可支持各种存储设备类型和功能。所有 Android 版本均支持配有传统存储(包括便携式存储和模拟存储)的设备。便携式存储是指物理介质(如 SD 卡或 USB 设备),用于进行临时数据传输/文件存储。物理介质可以随设备一起保留更长时间,但并非固定在设备上,可以移除。自 Android 1.0 开始,SD 卡已可用作便携式存储;Android 6.0 增加了对 USB 的支持。模拟存储可通过将部分内部存储暴露于模拟层来实现存储,此功能从 Android 3.0 开始便已受到支持。

从 Android 6.0 开始,Android 支持可合并的存储设备,这种存储设备是指可以像内部存储设备那样进行加密和格式化的物理介质(例如 SD 卡或 USB 设备)。移动存储设备可存储各类应用数据。

权限

对外部存储设备的访问受各种 Android 权限的保护。从 Android 1.0 开始,写入访问采用 WRITE_EXTERNAL_STORAGE 权限保护。从 Android 4.1 开始,读取访问采用 READ_EXTERNAL_STORAGE 权限保护。

从 Android 4.4 开始,外部存储设备上的文件所有者、组和模式根据目录结构合成。这样,应用可在外部存储设备上管理其特定文件包的目录,而无需获得广泛的 WRITE_EXTERNAL_STORAGE 权限。例如,文件包名称为 com.example.foo 的应用现在可以自由访问外部存储设备上的 Android/data/com.example.foo/,没有权限限制。通过将原始存储设备封装在 FUSE 守护进程中,可实现此类合成权限。

从 Android 10 开始,以 Android 9 及更低版本为目标平台的应用默认使用旧版存储,并且可以选择使用隔离存储。以 Android 10 为目标平台并默认使用隔离存储的应用可以暂时选择停用隔离存储。使用控制存储模型的清单属性

由于 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限均受到软性限制,因此,如果安装程序未将应用列入白名单,则权限仅能控制对听觉和视觉集合的访问,而无权访问 SD 卡。这在应用旧版存储时也同样适用。如需详细了解硬性限制和软性限制,请参阅 Android 10 中的硬性限制和软性限制。

如果安装程序将该权限列入白名单,则以旧模式运行的应用将获得非隔离权限行为。该权限可控制 SD 卡访问权限,以及听觉和视觉集合。如果应用以 Android 9 或更低版本为目标平台且不选择使用隔离存储,或者以 Android 10 为目标平台且选择停用隔离存储,就会出现这种情况。

白名单状态只能在安装时指定,并且在应用安装完成后才能更改。

运行时权限

Android 6.0 引入了一种新的运行时权限模式,在该模式下,应用可在运行时根据需要请求功能。由于新模式包含 READ/WRITE_EXTERNAL_STORAGE 权限,因此平台需要动态授予存储访问权限,而不会终止或重启已运行的应用。通过维护所有安装存储设备的三个不同视图可实现该模式:

/mnt/runtime/default 向无特殊存储权限的应用以及 adbd 和其他系统组件所在的根命名空间显示

/mnt/runtime/read 向具有 READ_EXTERNAL_STORAGE(针对 Android 10 设置 LEGACY_STORAGE)的应用显示

/mnt/runtime/write 向具有 WRITE_EXTERNAL_STORAGE 的应用显示

在 Zygote 进行 fork 操作时,我们会为各运行应用创建装载命名空间,并将相应的初始视图挂载到位。稍后,在授予运行时权限后,vold 将跳转到已运行应用的装载命名空间,并将升级后的视图挂载到位。请注意,权限降级定会导致应用被终止。

用于实现此特性的 setns() 功能至少需要运行 Linux 3.8,但补丁程序已反向移植至 Linux 3.4。PermissionsHostTest 测试可用于验证内核行为是否正确。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/150895.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 网络分析最佳路径_局域网找不到网络路径

    网络分析最佳路径_局域网找不到网络路径网络分析——路径分析一、实验背景在远距离送货,物资派发、急救服务和邮递等服务中,经常需要在一次行程中同时访问多个站点(收货方、邮件主人、物资储备站等),如何寻找到一个最短和最经济的路径,保证访问到所有站点,同时最快最省地完成一次行程,这是很多机构遇到的问题。为解决这类问题,我们需要学习基于ArcGIS网络分析功解决实际路径问题,掌握网络分析基本技能。二、实验内容根据不同的要求,获得到达指…

  • 第58章、拍照功能实现(从零开始学Android)

    第58章、拍照功能实现(从零开始学Android)Android有两种拍照方法,一种是直接调用系统的照相Intent,使用onActivityResult获取图片资源或者指定图片路径,拍照返回成功后去指定路径读取图片;一种是用SurfaceView自定义界面,添加业务个性化功能。一、第一种方法1、设计界面  (1)、布局文件  打开activity_main.xml文件。  输入以下代码: 

  • 七牛云的使用

    七牛云的使用

    2021年10月28日
  • SpringBoot2.0集成WebSocket,实现后台向前端推送信息

    SpringBoot2.0集成WebSocket,实现后台向前端推送信息什么是WebSocket?-初次接触WebSocket的人,都会问同样的问题:我们已经有了HTTP协议,为什么还需要另一个协议?它能带来什么好处?-答案很简单,因为HTTP协议有一个缺陷:***通信只能由客户端发起***,HTTP协议做不到服务器主动向客户端推送信息。https://github.com/moshowgame/spring-cloud-study/tree/master/spring-cloud-study-websocket

  • git使用具体介绍

    git使用具体介绍

  • 联想笔记本电脑键盘亮了屏幕不亮_联想笔记本电脑键盘为什么不亮

    联想笔记本电脑键盘亮了屏幕不亮_联想笔记本电脑键盘为什么不亮现在不管是工作还是学习,已经离不开电脑了,它的出现带给我们极大的方便,笔记本以它小巧灵活的体积更是受到了很多学生和商务人士的喜欢,可是市面上有那么多品牌的笔记本,应该怎么正确做出选择呢?下面小编就为大家带来联想笔记本电脑开机键亮但是黑屏,联想笔记本键盘没反应?联想笔记本电脑开机键亮但是黑屏1、若遇到联想笔记本电脑开机键亮但是黑屏的情况,可以拆卸掉笔记本背面的电池,只用电源适配器连接电脑,尝试开机一…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号