Android权限动态管理工具类

本文介绍了一种用于Android 6.0及以上版本的权限管理工具类实现方式,该工具类帮助开发者更方便地管理和请求应用所需的各类权限,如相机、读写SD卡等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接代码,在6.0之后Android系统的操作权限交给了用户主动管理,未解决不同手机开发中的权限问题:

工具类:

public class PermissionManager {
    //相机权限检测请求码
    public final static int PERMISSIONCODE=999;
    //相机权限
    public final static int CAME=0;
    //sd卡读写权限
    public final static int SD=1;
    public final static int SD1=2;
    //短信
    public final static int INFOMASTION=3;
    //电话
    public final static int PHONE=4;
    //精确定位
    public final static int GPS=5;

    //权限集合:
    public static String[] pers={Manifest.permission.CAMERA,Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_SMS,
            Manifest.permission.CALL_PRIVILEGED,Manifest.permission.ACCESS_FINE_LOCATION};

    //当前需要申请的权限集合
    public static int[] permissions;

    //其他权限类似可自行添加

    /**
     * 根据需求输入对应的需要检测申请的权限
     * @param permission
     */
    public static void setPermission(int... permission) {
        permissions = permission;
    }
    /**
     * 检测手机权限,如果没有提出申请
     * mtype
     */
    public static void checkPermission(Activity activity,int... permission){
        setPermission(permission);
        List<String> list=new ArrayList<String>();
        for(int i=0;i<permissions.length;i++){
            if (permissions[i]>=pers.length){
                //执行此步骤标识,代码检测的权限值集合包含越界值
                Toast.makeText(activity,"权限数值不合法",Toast.LENGTH_SHORT).show();
                return;
            }
            if ((ContextCompat.checkSelfPermission(activity,pers[permissions[i]]))!=PackageManager.PERMISSION_GRANTED){
                list.add(pers[permissions[i]]);
            }
        }
        if (list.size()>0){
            String[] a=new String[list.size()];
            list.toArray(a);
            //申请权限
            ActivityCompat.requestPermissions(activity,a,PERMISSIONCODE);
        }
    }
}


使用方法,一般的在程序启动或者页面启动调用工具类检测方法,根据需求灵活运用,可扩展:

1.直接在需要的地方调用 PermissionManager.checkPermission(上下问环境,CAME,SD,SD1);
  参数:第一个参数是你当前上下文环境
        第二个参数是一个参数列表 (可以输入任意个,以逗号分割): int型,根据写入的的int值在工具类中自行查找相应的权限类型
  扩展:直接在工具类中 添加 pers 集合(注意顺序),添加你需要检测的权限,设置对应的值就可以进行使用。
2.检测权限结果在activity中,复写方法,判定用户选则,进行相应操作:
  @Override
  public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
       super.onRequestPermissionsResult(requestCode, permissions, grantResults);
       //假设只选择了一个权限检测 grantResults这个集合的长度为1
       if (requestCode == PERMISSIONCODE) {
          if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
             //用户同意了操作权限
          } else {
             //用户拒绝了操作权限
          }
       }
}
欢迎指正

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值