原生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 测试可用于验证内核行为是否正确。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • GlboalMapper20如何把mbt转为tif

    GlboalMapper20如何把mbt转为tif一、为什么要把mbt转tifmbt是一种瓦片的单文件存储,打开浏览的速度都非常快。部分GIS软件支持度不是很好,比如ArcGIS等,用这些软件做分析的时候,无法直接基于mbt来做。就需要把mbt转为tif。二、打开mbt拖拽mbt到GlobalMapper二、导出文件选择geotiff三、导出配置选择真彩色分辨率设置:默认是导出最高级别,如果需要导出低级别的,可以自己调整分辨率范围设置:mbt经常用于存储大文件,实际分析用的范围比较小,直接设置

    2025年6月8日
    3
  • laravel 踩坑 env,config

    laravel 踩坑 env,config

    2021年10月26日
    43
  • 英文搜索网站_DFS搜索

    英文搜索网站_DFS搜索给定一个 m x n 二维字符网格 board 和一个单词(字符串)列表 words,找出所有同时在二维网格和字典中出现的单词。单词必须按照字母顺序,通过 相邻的单元格 内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母在一个单词中不允许被重复使用。示例 1:输入:board = [[“o”,”a”,”a”,”n”],[“e”,”t”,”a”,”e”],[“i”,”h”,”k”,”r”],[“i”,”f”,”l”,”v”]], words = [“oath”,

    2022年8月9日
    3
  • 2020年5月份编程语言排行榜「建议收藏」

    2020年5月份编程语言排行榜「建议收藏」前言本文章中语言排名数据来自TIOBE排行榜和PYPL排行榜。这段时间一直在忙,都忘记更新这个排行榜了,今天重操旧业,给大家看一下5月份的编程语言排行榜TIOBE排行榜5月份数据2020年5月TIOBE指数以下是官方说明五月标题:编程语言C又回到了第一位Java和C在4月份已经非常接近了,但是这个月C再次超越了Java。上一次C排名第一是在2015年。我们只能猜测为什么C又是第一名。其中一个原因可能是冠状病毒。这听起来可能很傻,但有些编程语言确实从这种情况中受益。数据科学领域的例子有P

    2022年5月31日
    61
  • CE教程步骤8操作指南

    CE教程步骤8操作指南CE 教程步骤 8 操作指南 CE 全称 CheatEngine 是一款专注于游戏的修改器 教程的步骤 8 特别难 这是一个四级指针 比较绕 下面分步解析 其他详细说明请参考别人的博客第一个指针 1 精确数值搜索多次搜索后得到唯一一条数据结论 001A1268 gt VALUE 地址 001A1268 存放数值 2 找出改写这个地址的指针结论 rsi 18 gt 001A1268 rsi 001A1250 指针数值 001A1250 偏移 18 一起改写地址 001A12683 以

    2025年10月18日
    3
  • 节流防抖的使用_监听滚动节流

    节流防抖的使用_监听滚动节流节流防抖的使用

    2025年7月26日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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