Android M运行时权限实战解析
需积分: 4 166 浏览量
更新于2024-07-20
收藏 4.71MB PPTX 举报
"对Android Marshmallow (也称Android M) 的技术分析,主要关注Runtime Permission(运行时权限)的改变和其对应用开发的影响。"
在Android M中,最大的变动之一是对权限管理系统的改革,引入了Runtime Permissions的概念。在此之前,Android系统在安装应用时一次性授予所有危险级别(Protection level为dangerous)的权限,而Android M开始,对于这些敏感权限的处理方式发生了变化,以提高用户对应用权限使用的控制权。
1. **Runtime Permissions的流程**:
- 当应用需要使用如相机、位置信息等危险权限时,系统会在首次使用该功能时弹出权限请求对话框,而不是在安装时。
- 如果用户拒绝某个权限,应用可能无法正常运行某些功能,比如拒绝相机权限后,应用无法开启相机。
- 用户可以在应用设置中随时开启或关闭这些权限,提供了更灵活的权限管理。
2. **API级别的影响**:
- API level <= 22的应用在安装时仍然会自动获取所有危险权限,但用户可以在设置中手动关闭。
- API level >= 23的应用必须在运行时通过`requestPermissions()`方法请求权限,如果用户未授权,相关功能将受限。
3. **兼容性问题**:
- 对于预置应用,即使目标API级别设为23,安装时也会得到所有权限,但用户依然可以关闭。
- 这个改变导致应用开发者需要考虑不同API级别的兼容性,可能需要为不同版本的Android提供不同的版本。
- 应用下载中心需要防止SDK level 23的应用被Android 5.1或更低版本的设备下载,否则安装将失败。
4. **Service, BroadcastReceiver, Content Provider的权限请求**:
- 这些非Activity组件没有`requestPermissions()`接口,因此无法直接请求权限。开发者需要在启动这些组件前确保所需权限已经得到用户许可,或者在需要权限的Activity中请求并处理权限。
5. **Headless Applications和Package的权限获取**:
- 无界面的应用或包需要权限的情况,开发者需要采用特殊策略,如通过绑定到有界面的组件来请求权限。
6. **预置应用的要求**:
- 预置应用只要使用到危险权限,其target API级别就必须设为23,以遵循新的权限管理规则。
Android M的Runtime Permissions机制增加了用户对应用权限使用的透明度,但同时也对开发者提出了新的挑战,需要他们在设计和实现应用时充分考虑到权限管理,以确保应用在不同Android版本上的兼容性和用户体验。开发者需要编写代码来检查和处理权限状态,并提供良好的用户体验,即使在用户拒绝某些权限时。同时,应用商店和更新策略也需要适应这种变化,以便正确地向用户推送适合他们设备的版本。
2017-10-27 上传
2011-03-04 上传
2017-09-22 上传
2021-09-30 上传
2021-05-03 上传
2010-03-21 上传
2019-09-25 上传
2008-03-17 上传
2021-06-27 上传
zzz1989721
- 粉丝: 1
- 资源: 3
最新资源
- 基于Python和Opencv的车牌识别系统实现
- 我的代码小部件库:统计、MySQL操作与树结构功能
- React初学者入门指南:快速构建并部署你的第一个应用
- Oddish:夜潜CSGO皮肤,智能爬虫技术解析
- 利用REST HaProxy实现haproxy.cfg配置的HTTP接口化
- LeetCode用例构造实践:CMake和GoogleTest的应用
- 快速搭建vulhub靶场:简化docker-compose与vulhub-master下载
- 天秤座术语表:glossariolibras项目安装与使用指南
- 从Vercel到Firebase的全栈Amazon克隆项目指南
- ANU PK大楼Studio 1的3D声效和Ambisonic技术体验
- C#实现的鼠标事件功能演示
- 掌握DP-10:LeetCode超级掉蛋与爆破气球
- C与SDL开发的游戏如何编译至WebAssembly平台
- CastorDOC开源应用程序:文档管理功能与Alfresco集成
- LeetCode用例构造与计算机科学基础:数据结构与设计模式
- 通过travis-nightly-builder实现自动化API与Rake任务构建