原生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)
blank

相关推荐

  • sql2005数据库置疑的解决方法_sql数据库置疑修复工具

    sql2005数据库置疑的解决方法_sql数据库置疑修复工具数据库被置疑后的解决方法(一)A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQLServerEnterpriseManager 里面建立。B.停掉数据库服务器。C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据 库数据文件test_data.mdf。D.启动数据库服务器。此时会看

  • 个人博客网站搭建[通俗易懂]

    个人博客网站搭建[通俗易懂]个人博客网站搭建VuePress介绍本人的个人博客网站,网站地址,是基于VuePress进行搭建。什么是VuePress根据官网:VuePress由两部分组成:第一部分是一个极简静态网站生成

  • Github提交代码却没有显示绿色小格子?帮你找回绿格子!

    Github提交代码却没有显示绿色小格子?帮你找回绿格子!辛辛苦苦提交的代码却没有绿格子?在github上提交代码之后,进入github上面查看自己的提交,可以看看刚刚的提交内容,但是却一直没有显示绿格子,一个原因是本地git的配置邮箱和github上面的邮箱不一致。解决方法:查看你的本地配置邮箱在命令行中输入:gitconfiguser.email查看你的本地配置邮箱.看看是否和github上面绑定的邮箱一致,如果不一致则更改一下。…

  • Android浏览器调用APP「建议收藏」

    Android浏览器调用APP「建议收藏」有时我们想通过点击浏览器中某些广告链接来启动或下载APP,以启动APP来说,我们知道APP可以定义一个scheme,如果我们在浏览器中定义一个URL,这个URL使用定义的scheme,这样点击后我们就可以打开我们的客户端了,但目前市面上有些浏览器支持性不好,或者直接就不支持,认为这个打开是一个有害的链,那么我们还有没有其它的办法来结合,下面我们以web服务做为功能基础来实现我们知道如果在地址栏

  • Ubuntu下VLC播放器的字幕乱码问题

    Ubuntu下VLC播放器的字幕乱码问题为了为可能进入的实验室实习做准备,今天重新装上了Ubuntu,今天的安装总的来说还是顺利多了。在播放软件上,这次我选择了VLC,因为感觉mplayer虽然强大,但是始终界面不是十分友好。而VLC也是灰常强大的。但是,在Linux下播放电影时,经常会遇到乱码的问题,下面就谈谈我的经验。造成字幕乱码的原因可能有两个:1.GB字符的解码:因为Linux下中文默认采取utf-

发表回复

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

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