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[]