Android 6.0权限处理(优化)

在这里推荐一个扔物线的自定义View的教程

https://zhuanlan.zhihu.com/p/27787919

用Kotlin编写的项目发现Dispatcher不能用..
上次编写的工具类缺陷太大…
So…又封装了一个.这次的真的是好多了.

用法 :

  1. 需要继承PermissionActivity类
  2. 单个请求用applyPermission()
  3. 多个请求用applyPermissionArray()

具体看代码 :

1.单个请求(以相机权限为例)

        /**
         *   单权限申请
         *   @param callback为回调,检测是否被用户同意或者是否被拒绝以及是否需要授权
         *   @param int permissionCode 为要申请权限代码 在PermissionConstant中有声明
         */
        applyPermission(new PermissionCallBack() {
            @Override
            public void onCameraPermissionSuccess() {
                Log.i(TAG, "onCameraPermissionSuccess: ");

            }

            @Override
            public void onCameraPermissionFailure() {
                Log.i(TAG, "onCameraPermissionFailure: ");

            }

            @Override
            public void onNoNeedPermissionApply() {
                Log.i(TAG, "onNoNeedPermissionApply: ");
            }
        }, PermissionConstant.PERMISSION_CODE_CAMERA);

2.一组权限申请

         /**
         *   组权限申请
         *   @param callback为回调,检测是否某权限被用户同意或者是否被拒绝以及是否需要授权
         *   @param String[] permissions 为要申请权限
         */
        applyPermissionArray(new PermissionCallBack() {
            @Override
            public void onGroupPermissionSuccess(String permissionName) {
                Log.i(TAG, "onGroupPermissionSuccess: " + permissionName);
            }

            @Override
            public void onGroupPermissionFailure(String permissionName) {
                Log.i(TAG, "onGroupPermissionFailure: " + permissionName);
            }

            @Override
            public void onNoNeedPermissionApply() {
                Log.i(TAG, "onNoNeedPermissionApply: ");
            }
        }, new String[]{Manifest.permission.READ_CALENDAR,
                Manifest.permission.CAMERA,
                Manifest.permission.ACCESS_FINE_LOCATION,
                Manifest.permission.READ_CONTACTS});

使用方式 : 暂时只能将代码Copy进项目中,JikPack暂时上传失败

代码地址 : https://github.com/RedWolfChao/RedPermission

注意事项 :

PermissionCallback是一个静态类,所以要重写其中方法的时候不需要全部重写,坏处也是重写方法的时候需要自己选择要重写的方法,选择方式为 :

  • 单个权限 : 重写onNoNeedPermissionApply 以及onXXXSuccess和onXXXFailure
  • 一组权限 : 重写onNoNeedPermissionApply 以及onGroupPermissionSuccess和onGroupPermissionSuccess

其它

Android一共有9组24个危险权限需要申请,每组中用户同意一个,其它的也跟带着会被同意
联系人权限

android.permission.WRITE_CONTACTS
android.permission.GET_ACCOUNTS
android.permission.READ_CONTACTS

电话权限

android.permission.READ_CALL_LOG
android.permission.READ_PHONE_STATE
android.permission.CALL_PHONE
android.permission.WRITE_CALL_LOG
android.permission.USE_SIP
android.permission.PROCESS_OUTGOING_CALLS
com.android.voicemail.permission.ADD_VOICEMAIL

日历权限

android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR

相机权限

android.permission.CAMERA

传感器权限

android.permission.BODY_SENSORS

定位权限

android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION

储存器权限

android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

麦克风权限

android.permission.RECORD_AUDIO

短信权限

android.permission.READ_SMS
android.permission.RECEIVE_WAP_PUSH
android.permission.RECEIVE_MMS
android.permission.RECEIVE_SMS
android.permission.SEND_SMS

具体可看官方文档

https://developer.android.com/reference/android/Manifest.permission_group.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值