动态权限适配方案

权限管理系统的变化

在Android6.0(M)之前,在用户安装应用的时候会产生一个权限列表,只有用户允许这些权限后,应用才可以正常的安装,这就会产生一个问题,这些权限对用户是不具有感知性的,也就是说用户都不知道你要这些权限干什么,我明明装的是一个阅读类型的应用,你却要我拨打电话的权限,你想干嘛呢?当然绝大部分的开发者是善意的,但也避免不了一些特殊人群利用这些“漏洞”做一些不好的事情。
而在Android6.0(M)之后,用户是可以不管权限直接安装应用的,当应用需要调用某些权限的时候,会给予用户一个通知与说明,我要这些权限干什么,这样下来可以让用户有更加清醒的权限分配意识,也在一定程度上更加人性化的保护了用户的隐私,避免了“权限一刀切”。

权限的分组

在Android6.0(M)之后,对权限进行了分类,大致有这三种:

  • 普通权限 正常权限,是对手机的一些正常操作,手机的震动,网络访问,蓝牙等权限,这些权限会在应用被安装的时候默认授予,用户不能拒绝,也不能取消,需要和Android6.0(M)之前的系统,在AndroidManifest.xml声明即可
  • 危险权限 运行中需要处理的权限,这些权限会关系到用户的隐私或影响到其他应用的运行,比如打电话,获取联系人、读写权限、发送信息权限、照相机权限等。
  • 特殊权限 比如:系统级别对话框:SYSTEM_ALERT_WINDOW 修改系统设置:WRITE_SETTINGS

动态适配权限的申请步骤

  1. 当你的应用targetSdkVersion小于23的时候,就算你运行在Android6.0系统上,它也会默认采用以前的权限管理机制。当你的targetSdkVersion大于等于23的时候且在Andorid6.0(M)系统上,它才会采用新的这套权限管理机制
  2. 在AndroidManifest.xml中申请你需要的权限,包括普通权限和需要申请的特殊权限。这是为了兼容低于m版本的系统
  3. 开始申请权限: 首先进行应用权限检查(checkSelfPermission()方法),检查应用是否有执行该方法所需要的权限,如有则可以正常运行,如没有则进行权限申请。进行权限申请时,首先会检查一下用户之前是否有响应过该权限的申请shouldShowRequestPermissionRationale,如没有,则显示权限申请对话框,如有,则检查用户之前是否有勾选“不再提醒”的选项,如没有,显示权限申请对话框,如有,则进行应用无权限异常运行。显示权限对口框后,判断用户是否允许应用权限申请(requestPermissions()),如是,则进行应用有权限正常运行,如否,则进行应用无权限异常运行。

      而代码实现则是:

-->1、使用Context.checkSelfPermission()接口先检查权限是否授权。

-->2、使用Activity.shouldShowRequestPermissionRationale()接口检查用户是否勾选不再提醒。

-->3、第2步返回为true时,表示用户并未勾选不再提醒选项,使用Activity.requestPermissions()接口向系统请求权限。

-->4、第2步返回为false时,表示用户已勾选不再提醒选项,则应用该弹框提示用户。

-->5、第3步执行后,不论用户是否授予权限,都会回调Activity.onRequestPermissionsResult()的函数。在Activity中重载onRequestPermissionsResult()函数,在接收授权结果,根据不同的授权结果做相应的处理。

备注:

(1)在AndroidManifest.xml 申请你需要所有权限,包括普通权限和需要申请的特殊权限。
(2)checkSelfPermission:检查是否拥有这个权限
(3)requestPermissions:请求权限,一般会弹出一个系统对话框,询问用户是否开启这个权限。
(4)shouldShowRequestPermissionRationale:Android原生系统中,如果第二次弹出权限申请的对话框,会出现“以后不再弹出”的提示框,如果用户勾选了,你再申请权限,则shouldShowRequestPermissionRationale返回true.

   (5)每个应用都有自己的权限管理界面,里面有本应用申请的权限以及各种状态,即使用户已经同意了你申请的权限,他也随时可以关闭


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
h5扫描功能是指在h5页面中实现扫描二维码或条形码的功能。而适配安卓系统9的意思是指将该功能适配到安卓9系统上,使其能够在该系统下正常运行。 在适配安卓系统9的过程中,需要考虑以下几个方面: 首先,需要确保h5页面的扫描功能能够在安卓9系统的浏览器中正常运行。由于安卓系统的碎片化特点,不同版本的安卓系统对于h5页面的支持程度可能存在差异,因此需要进行兼容性测试,确保在安卓9系统中能够正确识别二维码或条形码。 其次,需要确定适配的具体方案。安卓9系统引入了一些新的特性和API,比如WebRTC、WebBluetooth等,可以考虑利用这些新特性来实现扫描功能,提高用户体验。同时,还需要确保适配方案能够兼容旧版的安卓系统,以便广泛地适配到各种安卓设备上。 同时,还需要考虑安全性问题。扫描功能通常涉及到相机权限等敏感权限的使用,需要在适配过程中确保权限的正确申请和使用,以免造成用户信息泄露或其他安全问题。 最后,需要及时跟进安卓系统的更新和变化。安卓系统是一个不断更新迭代的系统,为了保证扫描功能的长期稳定性,需要及时跟踪安卓系统的变化,并进行相应的适配和优化。 总而言之,适配h5扫描功能到安卓系统9需要考虑到兼容性、方案选择、安全性和及时跟进等方面,以确保在安卓9系统中能够正常运行、稳定、安全地使用扫描功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值