一个安卓权限申请与回调的工具类(懒人用)

本文介绍了一个适用于Android SDK23及以后版本的权限申请工具类,包括Activity和Fragment的申请方法,详细讲解了申请过程及回调机制,并解答了为何需要区分Activity和Fragment申请的原因。
摘要由CSDN通过智能技术生成


前言&演示

​ Android SDK23以后,使用权限需要显式申请。

​ 最近的安卓项目反复使用到权限申请,于是把它写成了工具类。

演示:

权限申请实际演示

1、申请部分
1.1、Activiy申请

​ 简单的说明:说明都在注释里面写了,我就挑重点说吧

​ 权限数组:也可以用于申请单个权限(废话)

简单的调用:一般是把它写在一个检查权限的方法内部,要使用某项权限时,

​ 调用这个方法去判断有没有权限。

public boolean checkPermission(){
   
    //权限数组
    String [] permissions={
   Manifest.permission.CALL_PHONE,Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE};
    
    //三个参数: 
    //permissions (权限数组)
    //(上下文,只能这样调用:MainActivity.this)
    //requestCode(请求码,标识你的申请)
    return PermissionUtils.checkPermissions(permissions,0,MainActivity.this);
}

工具类:Activiy申请的方法

/**
     * (适用于Activity)
     *
     * 这个方法的作用是检查权限数组的中的权限,是否都已经得到授权,返回一个bool值
     * 没有得到授权的权限,会新建一个数组去申请权限
     *
     * @param permissions 权限数组
     * @param activity 用于调用权限申请、检查授权
     * @param requestCode 标识你的申请,用于回调
     * @return 返回bool值
     *
     * true:权限数组内部的权限都已经得到授权
     * false:权限数组中有部分权限未得到授权
     */
    public static boolean checkPermissions(String[] permissions, int requestCode,Activity activity) {
   
        //判断版本
        if (Build.VERSION.SDK_INT>=23){
   
            int checkPermission;
            //权限数组
            @SuppressLint("InlinedApi")
            List<String> notGrantedList = new ArrayList<>();
            for (String permission:permissions){
   
                //检查是否已经授权
                checkPermission = activity.checkSelfPermission(permission);
                if (checkPermission!= PackageManager.PERMISSION_GRANTED){
   
                    //未授权则添加进未授权数组
                    notGrantedList.add(permission);
                }
            }
            //未授权数组长度判空
            <
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值