美文网首页
Android 权限介绍

Android 权限介绍

作者: 郭海萍 | 来源:发表于2018-03-13 21:02 被阅读0次

    介绍

    前言

    课程提醒功能,需要在日历中为课程添加相应的信息,但是在oppo手机,点击拒绝了,fe提示添加到日历成功,优化此处代码

    Android 权限机制简介

    6.0之前:在menifest注册,用户安装app会有一个权限列表,类似一份协议表示用户对此已经知晓,造成权限胡乱申请,对用户造成风险

    6.0之后(包含6.0):9组危险权限,不仅要在manifest注册还要动态申请权限,比如调用拍照会弹出权限提示,只有用户自己点了确定才能继续拍照。

    安全权限

    只要在manifest.xml中列出即可

    危险权限

    1.targetSDKVersion < 23 & API(手机系统) < 6.0 :默认用户获得所有权限,并且无法手动更改权限配置(在华为4.4手机上,拍照会提示权限申请)

    2.targetSDKVersion < 23 & API(手机系统) >= 6.0:默认用户获得所有权限,可以手动更改权限配置,( 取消时手机会弹出提醒,告诉用户这个是为旧版手机打造的应用,让用户谨慎操作 ),启用app,不会弹出设置权限的提示框(华为,oppo,小米都这样,其他手机没有测试)

    3.targetSDKVersion >=23 & API(手机系统) < 6.0 :默认用户获得所有权限,并且无法手动更改权限配置

    4.targetSDKVersion >=23 & API(手机系统)>=6.0 :安装时候不会获得权限,运行时向用户申请权限,用户授权以后仍然可以在设置界面中取消授权,用户主动在设置界面取消后,在没有检验有无该权限的情况下,执行代码,在app运行过程中可能会出现crash。

    封装

    没有办法自己写个工具类拿到回调,因为权限回调在onRequestPermissionsResult是在Activity或者Fragment的方法

    1.自定义一个PermissionActivity,专门用于处理申请运行时权限操作。该Activity背景透明,用户无法察觉。执行完后finish掉。

    2.RxPermision 开源框架:https://github.com/tbruyelle/RxPermissions ,基本思路是透明的Fragment加入到当前的Activity来处理回调,比上面的方法更巧妙,但是可以不用Rxjava

    3.封装BaseActivity去实现运行时权限申请方法,然后所有Activity继承BaseActivity,需要时调用方法即可。

    2,3方法demo见:GitHub - guohaiping521/PermissionDemo: 申请权限工具类的封装

    实际开发的问题

    1.没有判断权限的情况下,进行一些需要权限的操作,可能会崩溃,可能没反应,所以不要在没有判断权限的情况下,想当然做一些操作。

    1>在代码中我们针对Android6.0的权限检测(ContextCompat.checkSelfPermission和requestPermission)按照正常的写,保证在Android6.0以上的设备正常运行。

    2>然后在具体的操作比如拨号,拍照或者录音,加一层tyr catch,能捕获到异常最好,不能捕获到的话继续第三步。

    3>对具体机型我们加入if判断,对操作数据做合法性判断

    2. Android6.0之后,权限分为install时的权限跟运行时权限

    Context checkSelfPermission只检查的install的权限,默认是true

    targetSdkVersion<23检查6.0权限情况的解决方案:PermissionChecker.checkSelfPermission

    下面是关于Android权限检查API checkSelfPermission失效问题的解释

    https://www.jianshu.com/p/d5c1a88f79c4

    本篇文章主要参考:

    https://www.jianshu.com/p/a9060b1599dc

    https://juejin.im/post/59e01ece51882578c6736db7

    http://blog.csdn.net/u010263943/article/details/71467877

    相关文章

      网友评论

          本文标题:Android 权限介绍

          本文链接:https://www.haomeiwen.com/subject/ulqofftx.html