Android动态权限管理:Android Runtime Permission.

从Android M 6.0开始,权限管理转变为运行时授权,用户可以在应用运行时控制权限,不再局限于安装时。权限分为普通权限和敏感权限,普通权限在manifest声明后自动授予,而敏感权限需要在运行时动态请求。动态权限管理涉及ActivityCompat和ContextCompat等API,确保应用在不同SDK版本下正常运行。适配动态权限管理是提高应用安全性的重要步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    上一篇谈了Android 隐藏的权限管理机制 AppOps,本文将就 Android M 6.0 之后引入的动态权限管理 Android Runtime Permission 展开讨论,Android 运行时权限管理也是基于 AppOps 开发的。

   Android M 之前,应用的权限请求是在安装时提示,确认后权限就会拥有。但从 Android M 6.0(API level 23)开始,用户对应用权限进行授权是发生在应用运行时,而不是在安装时。这样可以让用户在安装时节省时间,而且可以更方便的控制应用的权限(至少权限管理不需要 root 了)。用户可以按照对应用的需求来控制应用的权限,比如百度地图的联系人权限。同时用户也可以在应用程序设置中撤销对应用的权限授权。

   Android 系统中的权限被划分为两类:普通权限和敏感权限。

   普通权限不会涉及到用户隐私,如果应用在 manifest 文件中直接声明了普通权限,系统会自动授予权限给应用。比如:网络INTERNET、蓝牙 BLUETOOTH、震动 VIBRATE 等权限。

   敏感权限则要获取到一些用户私密的信息。如果你的应用需要获取敏感权限,首先需要获取用户的授权。比如:相机 CAMERA、联系人 CONTACTS、存储设备 STORAGE。

   Android 详细的权限信息可以在此处查找 https://developer.android.com/reference/android/Manifest.permission.html,每个权限里面可能会有 Protection level,标记着是 dangerous 还是 normal。

   在 Android 中普通权限和敏感权限,都需要在 manifest 文件中进行权限声明。然而,在不同版本的操作系统或不同的 target SDK level 中的结果是不同的。如果设备运行 Android 5.1 或者更低版本的操作系统,或者你的目标 SDK 版本号小于或等于 22,当你在 manifest 文件中请求了一些权限,用户必须在安装过程时授予全部权限,否则应用不能正常安装。如果设备运行在 Android 6.0 或者更高版本,并且目标 SDK 版本号大于或等于23,应用程序必须要在 manifest 文件中声明需要的权限,当程序运行时,它必须向用户请求授权每个所需的敏感权限。用户可以允许或拒绝授权请求,此时程序可以依赖用户已经授权的权限继续运行。例如:假设你的 app 需要定位和拍照权限,在请求权限时用户只授予了定位权限,那么当前程序可以正常运行并获取定位信息,但是无法进行拍照。

   Protection le

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值