Android获取权限并做出被拒绝页面跳转

话不多说,直接上代码,内有备注。

下面这个是请求权限的管理器,里面会有默认的权限请求列表,如果想自定义添加,就在初始化的时候添加所需要申请的权限即可。

/**
 * 权限管理类
 * 负责检查权限的是否全部拥有
 * 申请权限列表里面的权限
 *
 * @author WGG
 * @date 2019/05/21
 * @git https://gitee.com/final_static/projects
 */
public class PermissionManager {
    //请求权限时的请求码
    private final int REQUEST_MULTIPLE_PERMISSION = 100;
    //默认申请的权限数组
    private static String[] RequiredPermissions = new String[]{
            Manifest.permission.RECORD_AUDIO,           //录制音频
            Manifest.permission.GET_ACCOUNTS,           //访问通讯录
            Manifest.permission.READ_PHONE_STATE,       //获取设备信息
            Manifest.permission.CALL_PHONE,             //拨打电话和管理童话
            Manifest.permission.CAMERA,                 //拍摄照片和录制视频
            Manifest.permission.ACCESS_COARSE_LOCATION, //获取位置信息
            Manifest.permission.READ_EXTERNAL_STORAGE,  //访问文件
            Manifest.permission.WRITE_EXTERNAL_STORAGE, //写入文件
    };
	//传来的请求权限组,不传的话默认是RequiredPermissions
	private String[] initPermissions;
    //回调接口对象
    private VerifyPermissionsCallback callbackMultiple;

	//构造函数
    public PermissionManager(String[] initPermissions){
        this.initPermissions = initPermissions;
    }
	//默认构造函数
    public PermissionManager(){
    	this.initPermissions = RequiredPermissions;
    }
    
    /**
     * 外部调用请求权限入口
     *
     * @param activity
     * @param callback
     */
    public void verifyPermissions(Activity activity, VerifyPermissionsCallback callback) {

        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { // 如果SDK版本小于23,无需申请权限
            callback.onPermissionAllGranted();
            return;
        }else {
            //还没得到权限的权限数组
            String[] denyPermissions = getDenyPermissions(activity);
            //判断未获得的权限数组大小是否大于0
            if (denyPermissions.length > 0) {
                ActivityCompat.requestPermissions(activity, denyPermissions, REQUEST_MULTIPLE_PERMISSION);
                this.callbackMultiple = callback;
            } else {
                if (callback != null) {
                    callback.onPermissionAllGranted();
                }
            }
        }

    }

    /**
     * 将没获得到的权限放入一个数组并返回
     * @param context
     * @return
     */
    private String[] getDenyPermissions(@NonNull Context context) {
        ArrayList<String> denyPermissions = new ArrayList<>();
        for (String permission : RequiredPermissions) {
            //判断是否有该权限
            if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) {
                denyPermissions.add(permission);
            }
            LogUtils.i("权限:需要获取的权限:",""+permission);
            LogUtils.i("权限:
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值