这可能是最精简的Android6.0运行时权限处理方式,只有70行代码。附:各种权限的详细处理

本文探讨如何在不局限于Activity或Fragment的情况下处理Android 6.0的运行时权限。通过创建一个名为XPermissionUtils的工具类,将onRequestPermissionsResult回调放在Activity基类中,简化多页面权限处理。以拨打电话、录音、打开相机、获取位置和外部存储权限为例,详细阐述不同权限的处理方法。
摘要由CSDN通过智能技术生成

0x00:前言
对于Android6.0运行时权限的处理方式网上有很多,包括注解,RxJava等等。一直没有正面提到我关心的问题–如果我不在Activity或者Fragment里面,需要运行时权限该怎么去做?导致我开始一直以为运行时权限的处理必需要在Activity或者Fragment之中。

那么:

我有一个录音的自定义控件在很多页面需要使用怎么办?

我有一个联系人列表,要在adapter里面拨打电话怎么办?

我有一个定位的工具类要在多个页面使用怎么办?

等等…

之前我还问过一些同行,他说用回调,回调到Activity或者Fragment,我当时觉得是一种解决方案,但是却很麻烦,如果有多个页面使用,那不是要处理很多次。

直到某一天在github上看到一个分享了简单的工具类 MPermissionUtils ,一下子解决了我的疑惑,虽然他也没有明确给出答案,但是我从他的使用上却恍然大悟,原来是一开始我就理解错了,我们只需要把回调 onRequestPermissionsResult 方法放到Activity基类里面,通过工具类调出来,加一个处理结果的回调即可。那么一不做二不休,我们有没有考虑过Fragment里面的处理其实是多余的,我们可不可以都放到Activity里面来处理,事实证明是可以的。于是就化繁为简产生了我的 XPermissionUtils

0x01:代码实现

public class XPermissionUtils {
   

    private static int mRequestCode = -1;

    private static OnPermissionListener mOnPermissionListener;

    public interface OnPermissionListener {
   

        void onPermissionGranted();

        void onPermissionDenied();
    }

    @TargetApi(Build.VERSION_CODES.M)
    public static void requestPermissions(Context context, int requestCode
            , String[]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值