android各版本权限与存储

news2024/10/7 4:23:45

权限问题:

Android6(API 23)2015年之前       AndroidManifest.xml标注即可。在安装程序时可以看到程序所需权限,完全接收程序可以获取清单文件标注的权限,拒绝则程序安装不成功。

Android 6-10   动态申请权限(AndroidManifest.xml中同样也需要标注权限)

所以,开发应用程序基本就动态申请就对了,反正也兼容低版本。

存储问题:

首先介绍一下计算机中的内存与外存,内存(RAMRandom Access Memory)和外存(存储器,硬盘、固态硬盘(SSD)、SDU盘,光盘)

Android系统存储数据的变化:

1.Android 1.x-2.x:较早的Android版本使用的是基于FlashYAFFSYet Another Flash File System)文件系统来管理内部存储。这些版本中的应用程序数据存储在设备的内部闪存(ROM)上,并且没有提供直接访问的公共存储目录。

2.Android 3.x-4.4:从Android 3.0开始,Google引入了基于Linux文件系统的扩展文件系统(Ext4)作为内部存储的首选文件系统。这些版本中引入了外部存储的概念,即SD卡。应用程序可以将数据存储在内部存储(ROM)或可移动的SD卡上。

  1. 内部存储:应用程序的私有数据存储在内部存储中,并且只有该应用程序本身可以访问这些数据。这些数据通常存储在/data/data/<package_name>/目录下
  2. 外部存储:应用程序可以将公共数据存储在外部存储中,例如图片、音频、视频等。这些数据存储在SD上,并且可以通过相应的API进行访问。

***getFilesDir()data/….     内部存储空间(ROM)中应用程序私有的内部存储空间路径,只能被本应用程序访问,无需获取读写权限

Environment.getExternalStorageDirectory()   /storage/emulated/0/DCIM      获取外部存储空间(SD卡)路径(共享目录路径)需要获取读写权限。
如果并没有插入外部存储卡,这个方法获取到的同样也是内部存储的路径,可以理解为一个内部存储空间虚拟的SD卡

3.Android 4.4-9.0:从Android 4.4开始,Google引入了存储框架(Storage Framework),并推出了"Storage Access Framework"(SAF)来改善外部存储的访问方式。

SAF提供了标准化的API,使应用程序可以与用户设备上的各种存储提供者进行交互,包括内部存储和可移动的SD卡。这样,应用程序可以通过统一的接口来读取和写入各种存储位置的文件。      ****使用 SAF 提供的文件选择器和 DocumentProvider API6.0之前不用动态。6.0后动态申请权限(这里指的是敏感权限))

此外,Android 4.4引入了应用程序私有目录(App-specific directories),使应用程序可以在外部存储中创建自己的私有目录,而不需要获取其他特定权限。

4.Android 10及以上:从Android 10开始,Google进一步加强了对外部存储的访问限制。默认情况下,应用程序只能访问其私有目录和公共存储目录(例如Music/、Pictures/等),对于其他外部存储中的文件,应用程序需要请求特定的权限。

Scoped Storage(作用域存储)是Android 10引入的新特性,它更加严格控制了应用程序对外部存储的访问权限。每个应用程序都有自己的私有目录,无法直接访问其他应用程序的文件。应用程序只能通过声明适当的权限或使用SAF来访问其他文件。

总结:6.0后动态权限(敏感的权限需动态),存储的话,内部存储/外部存储都需要统一的DocumentProvider API,并且能在外部存储创建私有目录,应用程序只能访问其私有目录和公共存储目录。

Android 10API 级别 29)开始,Android 引入了一些关于访问外部存储的变更,这可能导致在真机上使用 Environment.getExternalStoragePublicDirectory() 方法无法正常工作。

Android 10 及更高版本中,Environment.getExternalStoragePublicDirectory() 方法被标记为弃用,并且不再访问应用的外部存储空间。相反,它返回的是一个应用私有目录的路径,而非共享存储空间中的公共目录。

为了支持对外部共享存储空间的访问,Android 引入了新的存储访问框架,即 Storage Access FrameworkSAF)和 MediaStore API。这些框架提供了更安全、更灵活的方式来管理外部存储访问权限和文件操作。

如果你需要在真机上访问共享存储空间中的特定目录(例如 Movies 目录),你可以考虑使用以下方法之一:

  1. 使用 Intent  ACTION_OPEN_DOCUMENT_TREE 启动 SAF,允许用户选择共享存储目录,并获取访问权限。
  2. 使用 MediaStore API 来访问特定类型的媒体文件,例如影片、音频或图像。

请注意,无论使用哪种方法,你仍然需要请求适当的权限,并与用户进行交互以获取所需的访问权限。

总结起来,如需在真机上访问外部共享存储空间,传统的 Environment.getExternalStoragePublicDirectory() 方法已不再适用。应使用新的存储访问框架(如 SAF MediaStore API)来管理访问权限和文件操作。


敏感权限:

在 Android 系统中,许多应用程序需要获取系统权限才能完成某些操作。比如,访问用户的联系人、获取设备的位置信息、使用相机等。获取权限的主要目的是确保应用程序只能在经过用户授权的情况下,才能访问敏感信息或执行敏感操作,以保护用户的隐私和安全。

通常情况下,只有具有特定权限的应用程序才能执行以下操作:

访问敏感数据:例如用户的联系人、短信、电话记录等

执行系统级别的操作:例如在后台运行、启动服务、开机自启

控制硬件设备:例如使用相机、录音、定位等

更改系统设置:例如更改屏幕亮度、打开蓝牙、激活谷歌地图等

当应用程序需要访问受保护的资源时,Android 系统会弹出一个对话框,询问用户是否授予应用程序所请求的权限。用户可以选择授予或拒绝权限。如果用户拒绝了权限请求,应用程序可能无法正常工作。

需要注意的是,在 Android 6.0 及以上版本中,系统引入了运行时权限(Runtime Permission)机制。这个机制要求应用程序在运行时请求需要的权限,并且用户可以在任何时候撤销权限。这使用户可以更好地控制应用程序访问敏感信息和执行敏感操作的方式。

总之,Android 应用程序需要获取系统权限来执行敏感操作并访问受保护的资源,以保护用户的隐私和安全。在请求权限时,应用程序应该清楚地说明所需的权限,并尽可能遵循最佳实践,以确保用户信任和满意。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测算法——YOLOV7——详解

1、主要贡献 主要是现有的一些trick的集合以及模块重参化和动态标签分配策略&#xff0c;最终在 5 FPS 到 160 FPS 范围内的速度和准确度都超过了所有已知的目标检测器。 当前目标检测主要的优化方向&#xff1a;更快更强的网络架构&#xff1b;更有效的特征集成方法&#xff1…

小家电亚马逊METI备案

亚马逊日本站要求有PSE认证和METI备案&#xff0c;也就是电子电气产品要出口日本&#xff0c;怎么办理&#xff0c;申请流程&#xff0c;费用等&#xff1f; 日本PSE认证的检测标准是什么&#xff1f; J60950检测标准 J62133和J60335。 哪些检测机构可以办理METI和PSE认证&a…

让家长、学生轻松掌握学业表现

亲爱的老师们&#xff01;又到了定期发布成绩的时候啦&#xff01;您是否为繁琐的操作而烦恼&#xff1f;不用担心&#xff0c;我来教给您如何使用成绩查询系统&#xff0c;让您的工作变得轻松又高效&#xff01; 成绩查询系统是什么&#xff1f; 成绩查询系统是一种高效、便捷…

成都瀚网科技有限公司:抖音小店选品策略引领电商潮流

在抖音小店日益繁荣的电商环境中&#xff0c;选品显得尤为重要。一个好的产品可以带来稳定的流量和可观的销售额&#xff0c;而一个错误的选择可能导致店铺的运营陷入困境。那么&#xff0c;如何在抖音小店进行正确的选品呢&#xff1f;本文将为你揭示抖音小店选品的秘密通道。…

序列式容器——vector

1、vector是动态分配的数组&#xff0c;不必程序员手动去扩充数组大小&#xff0c;其原理&#xff1a;填充vector就像扔垃圾&#xff0c;家里的垃圾桶不够放&#xff0c;就倒到小区的大垃圾桶&#xff0c;小区大垃圾桶满了&#xff0c;就有垃圾车来回收&#xff0c;每次都是&am…

Redis的神奇之处:为什么它如此快速?【redis第三部分】

Redis的神奇之处&#xff1a;为什么它如此快速&#xff1f; 前言第一&#xff1a;redis为什么使用单线程第二&#xff1a;深入探讨Redis内存存储&#xff0c;包括内存布局、数据存储和索引机制1. 内存布局&#xff1a;2. 数据存储&#xff1a;3. 索引机制&#xff1a; 第三&…

神器抓包工具 HTTP Analyzer v7.5 的下载,安装,使用,破解说明以及可能遇到的问题

文章目录 1、HTTP Analyzer 工具能干什么&#xff1f;2、HTTP Analyzer 如何下载&#xff1f;3、如何安装&#xff1f;4、如何使用&#xff1f;5、如何破解&#xff1f;6、Http AnalyzerStd V7可能遇到的问题 1、HTTP Analyzer 工具能干什么&#xff1f; A1&#xff1a;HTTP A…

@RequestMapping运用举例(有源码) 前后端如何传递参数?后端如何接收前端传过来的参数,传递单个参数,多个参数,对象,数组/集合(有源码)

目录 一、RequestMapping 路由映射 二、参数传递 1、传递单个参数 2、传递多个参数 3、传递对象 4、后端参数重命名 一、RequestMapping 路由映射 指定请求访问的路径既可以修饰类&#xff0c;又可以修饰方法 RequestMapping支持Get、Post、Delete等多种请求方式 Re…

微信小程序开发源码系统集合版:含15大类别小程序功能 包升级更新

随着微信小程序的日益普及&#xff0c;越来越多的开发者投入到了小程序的开发工作中。为了帮助开发者更高效地进行小程序开发&#xff0c;给大家介绍分享一款微信小程序开发源码集合版&#xff0c;小程序开发平台包含15大类别的小程序功能。 一、微信小程序开发源码集合版概述…

React-Redux总结含购物车案例

React-Redux总结含购物车案例 reduc简介 redux是react全家桶的一员&#xff0c;它为react给i共可预测化的状态管理机制。redux是将整个应用状态存储到一个地方&#xff0c;成为store,里面存放着一颗树状态(state,tree),组件可以派发dispatch行为action给store,而不是直接通知其…

内衣洗衣机有必要买吗?口碑好的小型洗衣机测评

在近年以来&#xff0c;由于人们对健康的认识和生活质量的不断改善&#xff0c;使得内衣洗衣机这一类的产品在近年来得到了飞速的发展&#xff0c;洗烘一体机、洗烘套装的价格总体下降&#xff0c;功能和性能都得到了改善&#xff0c;往往更多的用户会选择一台或者多台洗衣机来…

java--基本的算术运算符、+符号做连接符

运算符是对变量、字面量进行运算的符号 1.基本的算术运算符 注意&#xff1a;如果是整数相除&#xff0c;得到的还是整数&#xff0c;会舍去小数点后面的数的 取余最后得到的是两个数相除的到的余数 2.“”符号可以做连接符的 1.“”符号与字符串运算的时候是用作连接符的&am…

雷电模拟器端口号 adb连接

在尝试adb连接雷电模拟器时&#xff0c;网上查询了一下端口号&#xff0c;发现说是5555. 但是自己尝试&#xff0c;会提示&#xff1a; cannot connect to 127.0.0.1:5555: 由于目标计算机积极拒绝&#xff0c;无法连接。 (10061) 终于发现&#xff0c;因为我打开的模拟器&am…

观察者模式java

观察者模式是一种常见的设计模式&#xff0c;用于在对象之间建立一对多的依赖关系。在该模式中&#xff0c;一个主题&#xff08;被观察者&#xff09;维护了一个观察者列表&#xff0c;并在自身状态发生变化时通知所有观察者进行相应的更新。 观察者模式的核心概念包括以下几…

阿里企业邮箱域名解析MX记录表

阿里企业邮箱配置需要为域名添加MX解析记录&#xff0c;不只是MX域名解析记录值&#xff0c;还需要为域名添加pop3、imap、smtp及mail等CNAME解析类型&#xff0c;阿里云百科aliyunbaike.com分享阿里云企业邮箱域名MX解析记录类型、记录值及服务器地址&#xff1a; 新版阿里企…

自研操作系统到底有没有技术难度?

自研操作系统到底有没有技术难度? 最近小米自研操作系统的事情引起了大家热烈讨论。今天我们来从技术的角度来分析一下做自研操作系统到底有没有技术难度。先说结论: 大家放心,做自研操作系统没有中国公司不可跨越的技术难度。但是要把操作系统的性能&#xff0c;用户体验&a…

C++设计模式_11_builder 构建器(小模式,不太常用)

builder 构建器也是属于“对象创建模式”模式的一种&#xff0c;是一个不常用&#xff0c;比较小的模式。 文章目录 1. 动机&#xff08;Motivation&#xff09;2. 代码演示builder 构建器2.1 builder 构建器模式的形式1方法2.2 builder 构建器模式的形式2方法2.3 两种形式总结…

推荐一款最近风很大的配音工具~

逐渐发现身边越来越多人开始朝着丰富多彩的副业方向发展&#xff0c;而在这其中&#xff0c;“自媒体”深受大家喜爱&#xff0c;许多人开始看到了商机并纷纷“下海”制作短视频&#xff0c;那么不知道在座的各位“下海”了没有呢哈哈哈哈&#xff1f;短视频需求越来越大&#…

测试左移和右移怎么做,这篇文章写的太详细了

通俗的讲&#xff1a;左移是往开发阶段移&#xff0c;右移是往发布之后移。 正常测试&#xff1a;提测后的测试工作——到——发布验证完成阶段。 测试左移&#xff1a;提测之前的测试。 如&#xff1a;代码单元测试&#xff0c;代码质量检测&#xff0c;代码接口持续测试 等。…

为什么电商使用高匿代理ip更有效果?

前言 随着电商业务的不断发展&#xff0c;越来越多的电商平台开始使用代理IP作为一种有效的反爬虫手段。而高匿代理IP作为代理IP中的一种&#xff0c;其相较于其他类型的代理IP可以更好地保护电商业务的隐私和安全&#xff0c;从而更加有效地为电商平台服务。本文将从代理IP的…