Android 6.0权限申请框架

MyPermission

Android 6.0权限申请框架

GitHub release

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
dependencies {
    compile 'com.github.Thor-jelly:MyPermission:v1.0.1'
}

Android 6.0权限申请框架搭建

有不足之处请联系745661590@qq.com
反射加注解的方式
仿PermissionsDispatcher一个好用的权限请求框架
代码中注释很全了

方法

方法名描述
with传入当前界面对象
setRequestCode设置请求码
setRequestPermission设置请求权限
requestPermission请求权限

使用样例

可以直接查看代码中的样例

第一步,在需要请求权限的地方写请求权限代码

    MyPermission.with(this)
                .setRequestCode(REQUEST_PERMISSION_CODE)
                .setRequestPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE,
                        Manifest.permission.CALL_PHONE,
                        Manifest.permission.SEND_SMS)
                .requestPermission();

第二步,通过注解方式写出 权限赋予成功,失败,don’t ask again 这三种情况方法

 @PermissionSuccess(requestCode = REQUEST_PERMISSION_CODE)
    private void callPhoneSuccess() {
        //打电话方法
        Log.d(TAG, "callPhone: 打电话1PermissionSuccess");
    }

    @PermissionFailure(requestCode = REQUEST_PERMISSION_CODE)
    private void callPhoneFailure() {
        //打电话方法
        Log.d(TAG, "callPhone: 打电话2PermissionFailure");
    }

    //反射会返回don't ask Again 的权限
    @PermissionNotAskAgain(requestCode = REQUEST_PERMISSION_CODE)
    private void callPhoneNotAskAgin(List<String> notAskAgainList) {
        //打电话方法
        Log.d(TAG, "callPhone: 打电话3PermissionNotAskAgain");
        if (notAskAgainList != null) {
            for (String s : notAskAgainList) {
                Log.d(TAG, "callPhoneNotAskAgin: "+ s);
            }
            //调用写好的don't ask Again权限的弹窗,如果同意则跳转到权限界面,不同意则调用 失败方法。
            MyPermission.showDialogTipUserGoToAppSettting(this, REQUEST_PERMISSION_CODE, notAskAgainList);
        }
    }

最后一步,重写onRequestPermissionsResult方法,并添加MyPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults);一句话

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        MyPermission.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
    }

注解的一些小常识

java中元注解有四个: @Retention @Target @Document @Inherited
注解作用:注解就是在反射的时候做一个标记

注解名描述
@Retention注解的保留位置
@Retention(RetentionPolicy.SOURCE)注解仅存在于源码中,在class字节码文件中不包含
@Retention(RetentionPolicy.CLASS)默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得
@Retention(RetentionPolicy.RUNTIME)注解会在class字节码文件中存在,在运行时可以通过反射获取到
@Target注解的作用目标
@Target(ElementType.TYPE)接口、类、枚举、注解
@Target(ElementType.FIELD)字段、枚举的常量
@Target(ElementType.METHOD)方法
@Target(ElementType.PARAMETER)方法参数
@Target(ElementType.CONSTRUCTOR)构造函数
@Target(ElementType.LOCAL_VARIABLE)局部变量
@Target(ElementType.ANNOTATION_TYPE)注解
@Target(ElementType.PACKAGE)
@Document说明该注解将被包含在javadoc中
@Inherited说明子类可以继承父类中的该注解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值