权限动态适配(三)

来源:互联网 发布:淘宝地址错了怎么改 编辑:程序博客网 时间:2024/06/06 19:32

功能

5.0、6.0动态权限适配。

说明

该项目基于hongyangAndroid的MPermissions进行二次开发。采用编译时注解,较运行时注解效率高。最初纯粹作为Andriod 编译时注解项目使用,较原项目有如下升级:

  • 支持java8

  • 支持一行代码同步请求多权限

  • 支持多种回调函数,代码更简洁

  • 支持国产机型适配

  • 支持国产机型5.0权限申请

概述

  • 解决ActivityCompat.shouldShowRequestPermissionRationale(Activity, String)无法弹出权限申请对话框问题。

  • 解决显示授权失败却回调权限申请成功方法问题。

  • 解决用户拒绝后不再提示权限申请对话框问题。

  • 解决5.0权限申请问题。

使用文档

  • 必加二次权限申请回调(#must_add)

  • 接口回调(#annotation)

  • 单个权限申请(#single)

  • 多个权限同步申请(#mutli)

  • Listener回调(#listener)

  • 单个权限申请(#sinlge_listener)

  • 多个权限同步申请(#mutli_listener)

具体用法

  • 引入依赖

    • project中build.gradle

      allprojects {     repositories {     // 添加下行     maven { url 'https://jitpack.io' }     }}
    • app中build.gradle

      dependencies {     compile 'com.github.jokermonn:permissions4m:2.1.0-lib'     annotationProcessor 'com.github.jokermonn:permissions4m:2.1.0-processor'}
  • 查看具体代码

注意

  • 申请权限方法不可在onResume()中使用,否则会陷入死循环,无限输出Toast信息。

  • 同步申请默认强制申请requestForce(true),同步申请不支持@PermissionsNonRationale

  • 目前针对主流权限强制对话框弹出已基本完成,对涉及使用以下权限代码暂并未完善。

    • Manifest.permission.GET_ACCOUNTS

    • Manifest.permission.USE_SIP

    • Manifest.permission.ADD_VOICEMAIL

    • Manifest.permission.WRITE_CALENDAR

    • Manifest.permission.CAMERA

    • Manifest.permission.SEND_SMS

    • Manifest.permission.RECEIVE_WAP_PUSH

    • Manifest.permission.RECEIVE_MMS

    • Manifest.permission.RECEIVE_SMS

  • 目前小米通讯录授权失败原因有两种:

    • 用户手机中不存在联系人

    • 用户拒绝授权(建议针对小米机型做出相应提示)

  • 同步申请不支持@PermissionsNonRationale/PermissionPageListener回调(假设同步申请权限A -> B -> C,当B被拒时,应弹出跳转权限对话框还是申请权限C对话框?)

  • 不支持权限组申请是因国产手机有部分适配畸形。虽可一组权限格式进行申请授权,但却可分别关闭同组权限内单个权限。若针对被拒权限做回调,则代码显冗余。

官方文档

在运行时请求权限

完整代码

https://github.com/snpmyn/PermissionDynamicThree.git

原著

http://mp.weixin.qq.com/s/23N-ouoalLc_IKsPSZEJgw

原创粉丝点击