Android AndPermission获取权限

工具类PermissionUtils
网上找来的

package com.baidu.map.demo;
import android.content.Context;
import android.os.Build;

import com.yanzhenjie.permission.AndPermission;

/**
 * Android权限申请工具类
 */
public class PermissionUtils {
    /**
     * 注释:权限申请回调
     */
    public interface PermissionListener {
        void onSuccess(Context context);
        void onFailed(Context context);
    }

    /**
     * 注释:应用相关组权限
     */
    public static void applicationPermissions(Context context, PermissionListener listener, String[]... permissions) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
            if (!AndPermission.hasPermissions(context, permissions)) {
                AndPermission.with(context)
                        .runtime()
                        .permission(permissions)
                        .rationale((mContext, data, executor) -> {
                            //选择显示提示弹窗
                            executor.execute();
                        })
                        .onGranted((permission) -> {
                            listener.onSuccess(context);
                        })
                        .onDenied((permission) -> {
                            listener.onFailed(context);
                        })
                        .start();
            } else {
                listener.onSuccess(context);
            }
        } else {
            listener.onSuccess(context);
        }
    }

    /**
     * 注释:应用相关单个权限
     */
    public static void applicationPermissions(Context context, PermissionListener listener, String... permissions) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP_MR1) {
            if (!AndPermission.hasPermissions(context, permissions)) {
                AndPermission.with(context)
                        .runtime()
                        .permission(permissions)
                        .rationale((mContext, data, executor) -> {
                            //选择显示提示弹窗
                            executor.execute();
                        })
                        .onGranted((permission) -> {
                            listener.onSuccess(context);
                        })
                        .onDenied((permission) -> {
                            listener.onFailed(context);
                        })
                        .start();
            } else {
                listener.onSuccess(context);
            }
        } else {
            listener.onSuccess(context);
        }
    }

}

build.gradle中添加依赖
api 'com.yanzhenjie:permission:2.0.0-rc11'
implementation 'com.android.support:design:27.1.1'
后面这个不过不加会报错无法访问Fragment 找不到android.support.v4.app.Fragment的类文件

使用的时候 在申请权限的地方

 PermissionUtils.applicationPermissions(this, new PermissionUtils.PermissionListener() {
            @Override
            public void onSuccess(Context context) {
                // 定位初始化
                initLocation();
            }

            @Override
            public void onFailed(Context context) {
            	// 这里修改要申请的权限
                if (AndPermission.hasAlwaysDeniedPermission(context, Permission.Group.Camera)
                        && AndPermission.hasAlwaysDeniedPermission(context, Permission.Group.STORAGE)) {
                    AndPermission.with(context).runtime().setting().start();
                }
                finish();
            }
        }, Permission.Group.STORAGE, Permission.Group.Camera);

另外不要忘记还要在AndroidManifest清单中申请相应的权限

发布了57 篇原创文章 · 获赞 22 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Mediary/article/details/103831380
今日推荐