目前最流行的运行时权限请求框架

本文对比了Android中流行的三个运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions。介绍了它们的共同点与不同之处,帮助开发者选择合适的权限管理库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前最流行的运行时权限请求框架PermissionsDispatcher、RxPermissions和easypermissions的对比

Android6.0版本的一个重大改动就是增加了运行时权限(动态权限):一些危险的权限不单止要在AndroidMainifest文件声明,还要在运行的时候使用代码来申请,让用户同意才进行授权。

由于Android自带的API使用起来(怎么使用就不写了,网上很多)比较麻烦,所以网上出现了一大堆简化这个过程的开源库,这里介绍目前最流行的三个开源库(GitHub上Star最多)PermissionsDispatcher、RxPermissions和easypermissions进行体验并对比他们的用法,了解一下这三个库的功能,方便做出选择。

这里检查权限的方法我采用了一个工具类封装(由于PermissionsDispatcher、RxPermissions都没带有单纯检查权限的功能,只有easypermissions有,这里用一个工具类封装一下检查权限的方法,返回我想要的字符串):

public class PermissionsLogUtils {
    private static StringBuffer logStringBuffer = new StringBuffer();
    // 查看权限是否已申请
    public static String checkPermissions(Context context,String... permissions) {
        logStringBuffer.delete(0,logStringBuffer.length());
        for (String permission : permissions) {
            logStringBuffer.append(permission);
            logStringBuffer.append(" is applied? \n     ");
            logStringBuffer.append(isAppliedPermission(context,permission));
            logStringBuffer.append("\n\n");
        }
        return logStringBuffer.toString();
    }

    //使用EasyPermissions查看权限是否已申请
    public static String easyCheckPermissions(Context context,String ... permissions) {
        logStringBuffer.delete(0,logStringBuffer.length());
        for (String permission : permissions) {
            logStringBuffer.append(permission);
            logStringBuffer.append(" is applied? \n     ");
            logStringBuffer.append(EasyPermissions.hasPermissions(context,permission));
            logStringBuffer.append("\n\n");
        }
        return logStringBuffer.toString();
    }

    // 查看权限是否已申请
    private static boolean isAppliedPermission(Context context,String permission) {
        return context.checkSelfPermission(permission) ==
                PackageManager.PERMISSION_GRANTED;
    }
}

GitHub地址:https://github.com/hotchemi/PermissionsDispatcher

GitHub地址:https://github.com/googlesamples/easypermissions

GitHub地址:https://github.com/tbruyelle/RxPermissions


共同点
三者都简化了Android6.0申请运行时权限的流程,比使用Android自带的API方便很多,可扩展性高。

不同点

功能PermissionsDispatchereasypermissionsRxPermissions
单独检查权限功能
申请权限前提示操作有,可以自定义操作,弹出Dialog、Toast、SnackBar等等都行有,而且定制了Dialog无,需要自己实现
不再提示时的处理操作有,而且可以使用Dialog让用户选择跳到APP设置界面
一次申请多个权限时,对单个失败的权限处理操作
结合RxJava
不能把方法私有

另有2个第三方权限申请库,star比上面3个少,推荐用上面3个。
https://github.com/getActivity/XXPermissions
https://github.com/yanzhenjie/AndPermission

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值