Android6.0 以上权限处理(AOP)

作者: 钱小俊24岁了呢 | 来源:发表于2019-10-08 10:45 被阅读0次

简述

Android 6.0 完善了应用的权限系统,权限的申请变成了由用户触发。开发者不得不在需要使用 权限 时,再调用申明权限方法。Aop(面向切面编程)的思想,就和权限申明十分契合。所以,本库使用Aop进行权限处理,让Android权限处理变得更加简洁明了。

说明

不会强强制引入 AndroidxAndroidSupport 包。
Tips: 本库有什么BUG欢迎提交 issue反馈

项目地址

https://github.com/aoomeo/Android_Aop_Authority

快速集成

首先,感谢 aspectjx,本库依赖 aspectjx 使用。

  • 需要在 项目的根目录 里添加:
dependencies {
    classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.4'
}
  • 需要在 appbuild.gradle 中添加
apply plugin: 'android-aspectjx'
  • 最后集成 本库
implementation 'com.aoomeo.android:permissionaop:0.0.4'

参数说明

RequirePermission

param type default description
permissions String[] none 申明的权限数组
negativeText String "取消" AlertDialog中的negativeButton's Text
negativeTextColor String "" AlertDialog中的negativeButton's TextColor,TextUtils.isEmpty()检测
positiveText String "去设置" AlertDialog中的positiveButton's Text
positiveTextColor String "" AlertDialog中的positiveButton's TextColor,TextUtils.isEmpty()检测
title String "提示" AlertDialog中的标题
tips String[] "当前操作缺少必要的权限。\n请点击"设置"-"权限"打开所需权限。" 提示,支持数组,使用StringBuilder.append

在需要权限的方法前,加上

@RequirePermission(permissions = [Manifest.permission.ACCESS_FINE_LOCATION])

如需处理拒绝回调,及设置页面返回拒绝回调,实现IPermissionRefuseListener即可

IPermissionRefuseListener

function return params description
permissionRefused void void 用户拒绝权限回调
permissionForbidden boolean void 用户勾选不再提醒后的回调处理,return true:自定义处理;return fasle,默认弹窗
permissionRefusedBySetting void void 用户跳到设置页后的回调

IPermissionRefuseListener.permissionForbidden()
用户自定义处理:勾选不再提醒后的情况,给出的一丁点建议。

 //弹窗 --> 希望用户去设置页给予权限。下面是跳转设置的方法
 private void startAppSettings(Activity activity) {
        Intent intent;
        try {
            intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
            intent.setData(Uri.parse("package:" + activity.getPackageName()));
            activity.startActivityForResult(intent, REQUEST_SETTING_CALL_BACK_CODE);
        } catch (ActivityNotFoundException e) {
            intent = new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS);
            activity.startActivityForResult(intent, REQUEST_SETTING_CALL_BACK_CODE);
        }
}

//弹窗 --> 用户点击取消按钮
//调用已实现的IPermissionRefuseListener.permissionRefused()

混淆须知

因为使用了反射来处理权限,所以对于一些源生类(Fragment & ActivityCompat)需要全部保留。

-keep class androidx.fragment.app.Fragment {*;}
-keep class android.app.Fragment {*;}
-keep class android.support.v4.app.Fragment {*;}

-keep class android.support.v4.app.ActivityCompat {*;}
-keep class androidx.core.app.ActivityCompat{*;}
-keepclassmembers class * {
    @com.aoomeo.android.permissionaop.RequirePermission <methods>;
}

相关文章

  • Android6.0 以上权限处理(AOP)

    简述 Android 6.0 完善了应用的权限系统,权限的申请变成了由用户触发。开发者不得不在需要使用 权限 时,...

  • Android调试SQLite数据库

    前言 Android6.0以上需要root权限才能成为超级管理员。因此Android6.0以上无法使用命令行调试数...

  • APP开发实战81-Android权限分类

    21 Android权限介绍 21.1权限分类 Android6.0及以上系统采用了新的权限,将权限分为两类。 2...

  • Android webview支持获取本地图片或拍照

    注意:Android6.0以上需要首先获取摄像头权限,不然无法获取照片

  • Android6.0拍照

    最近做Android项目关于6.0以上拍照权限问题,网上千篇一律浪费了很多时间。 Android6.0以上权限分为...

  • Android6.0权限管理

    Android6.0权限管理 Android6.0棉花糖发布也快一年了,一直没有时间去做相应的权限处理,最近有点时...

  • 知识点

    确保设备是否有外部存储 android6.0以上需要动态申请权限 Environment.getExternalS...

  • android6.0权限

    申请权限 android6.0需要使用权限列表 Fragment中运行时权限的特殊处理 Android各大手机品牌...

  • Android优雅地申请动态权限

    Android6.0以上的系统中,引入了运行时权限检查,运行时权限分为正常权限和危险权限,当我们的App调用了需要...

  • Android RxPermission管理权限

    前提:android6.0以上 并且tragetVersion >22的时候需要主动去做权限管理 基于RxPerm...

网友评论

    本文标题:Android6.0 以上权限处理(AOP)

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