Android 批量申请权限 您所在的位置:网站首页 android所有权限 Android 批量申请权限

Android 批量申请权限

2023-07-11 07:08| 来源: 网络整理| 查看: 265

Android开发时,到6.0系统上之后,有的权限就得申请才能用了。 Android将权限分为正常权限 和 危险权限 详细可参考: (https://www.cnblogs.com/liuzhipenglove/p/7102692.html)

网上也有很多参考例子,我这里总结下我的理解和用法 我们知道在Android6.0(SDK等级是23)以后有些权限是需要动态申请的 然后这里主要记录下如何同时动态申请多个权限

我申请的权限有三个:READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE,CAMERA,分别是读,写,还有相机权限, INTERNET的话我发现静态注册也是可以的,当然以防万一也可以加上.然后就是虽然是动态申请,但是还是需要在AndroidManifest.xml文件中进行静态申请的:

然后是动态权限申请 首先声明一个数组permissions,将所有需要申请的权限都放在里面

//1、首先声明一个数组permissions,将所有需要申请的权限都放在里面 String[] permissions = new String[]{ Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE};

创建一个mPermissionList,逐个判断哪些权限未授权,将未授权的权限存储到mPermissionList中

// 声明一个集合,用来存储用户拒绝授权的权 List mPermissionList = new ArrayList();

声明一个请求码,在请求权限的回调方法onRequestPermissionsResult中需要判断使用

//10000比较霸气 private static final int MY_PERMISSIONS_REQUEST_CODE = 10000;

进行权限判断和申请

private void getPermissions() { mPermissionList.clear(); //清空已经允许的没有通过的权限 for (int i = 0; i < permissions.length; i++) { //逐个判断是否还有未通过的权限 if (ContextCompat.checkSelfPermission(MainActivity.this, permissions[i]) != PackageManager.PERMISSION_GRANTED) { mPermissionList.add(permissions[i]); } } if (mPermissionList.size() > 0) { //有权限没有通过,需要申请 ActivityCompat.requestPermissions(this, permissions, MY_PERMISSIONS_REQUEST_CODE); } else { Log.e("getPermissions() >>>", "已经授权"); //权限已经都通过了 } }

请求权限后回调的方法,在权限请求完成后做个判断,是否完成了所有权限的申请,

@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); boolean hasPermissionDismiss = false; //有权限没有通过 if (MY_PERMISSIONS_REQUEST_CODE == requestCode) { for (int i = 0; i < grantResults.length; i++) { if (grantResults[i] == -1) { hasPermissionDismiss = true; //发现有未通过权限 break; } } } if (hasPermissionDismiss) { //如果有没有被允许的权限 //假如存在有没被允许的权限,可提示用户手动设置 或者不让用户继续操作 } else { Log.e("onRequestPermissionsResult >>>", "已全部授权"); } }

还有记录一个坑

image.png

如果你的gradle文件中 targetSdkVersion 参数设置成了21的话 等于是用6.0以前的版本运行,这样的话有可能导致无法动态申请权限,这点需要特别注意下

如若有补充,留言区留下你的宝贵意见,谢谢!!!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有