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清单中申请相应的权限

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值