运行时权限

本文介绍了如何在Android应用中声明和动态申请权限,特别是针对危险权限的处理流程。包括使用ContextCompat.checkSelfPermission()检查权限状态,以及使用ActivityCompat.requestPermission()进行权限申请。

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

    在AndroidManifest.xml文件里声明权限,声明的目的是在用户安装该软件时可以得知该软件所需的权限,好让用户有知情权和选择权,对于普通权限这就够了,但是对于危险权限是不够的,只能起到向声明的作用,还是用不了权限对应的功能,对于危险权限,需要在使用到对应功能时,动态地向用户申请权限。

    动态申请权限:申请前可以先查看一下用户给了该申请者权限没,如果给了就可以省去申请的麻烦了,检查是否被授权的方法是让申请者(上下文)兼容查看器去查看一下,ContextCompat.checkSelfPermission(申请者,申请的权限),该方法返回是否拥有权限的结果,用该结果与PackageManager.PERMISSION_GRANTED对比,PackegeManager是程序的管理者,PERMISSION_GRANTED代表被授权的值,如果相等就表示被授权过了,可以使用该权限对应的功能,如果没有就需要申请;对于活动的申请方式是,用活动兼容器ActivityCompat.requestPermission(申请者,申请的权限(字符串数组),申请标识码)申请权限,这个方法就会弹出一个对话框给用户看,让用户选择是否授予权限,选择结果会返回到一个onRequestPermissionResult(申请标识码,申请的权限(字符串数组),申请的返回结果grantResults)的方法里,在这个方法里去处理被授权和不被授权后的操作,具体的过程是先判断申请标识码,以知道是哪一个申请,然后申请是否被同意的结果都会被放到grantResults的数组里,先判断里面是否有结果了,也就是数组长度是否大于0,大于0代表申请结果出来了,否则就是申请结果还没有出来,如果大于0,就把grantResults[n]PackageManager.PERMISSION_GRANTED对比,如果相等就代表被授权了,就可以执行对应的功能,否则就可以提示用户授权没有通过。

    危险权限:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值