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文件中进行静态申请的:

然后是动态权限申请

<1>首先声明一个数组permissions,将所有需要申请的权限都放在里面

//1、首先声明一个数组permissions,将所有需要申请的权限都放在里面

String[] permissions = new String[]{

Manifest.permission.CAMERA,

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE};

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

// 声明一个集合,用来存储用户拒绝授权的权

List mPermissionList = new ArrayList<>();

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

//10000比较霸气

private static final int MY_PERMISSIONS_REQUEST_CODE = 10000;

<4>进行权限判断和申请

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() >>>", "已经授权"); //权限已经都通过了

}

}

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

@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以前的版本运行,这样的话有可能导致无法动态申请权限,这点需要特别注意下

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

android申请权限一次性申请多个,Android 批量申请权限相关推荐

  1. android申请权限一次性申请多个,android 6.0以上动态一次申请多个权限-最美解决方案...

    目录 背景 危险权限 申请权限思路 申请权限流程 干货 后续 一.背景 android23 API新增危险权限校验,需要手动获取: 二.危险权限: 日历数据 android.permission-gr ...

  2. android申请权限一次性申请多个,Android适配6.0动态申请权限,多权限同时申请

    哈哈,现在写适配6.0好像有点马后炮的感觉,不过以前确实没有注意到这些问题.前几天在添加高德地图定位功能的时候发现在Android 6.0系统上有很多的权限需要进行动态申请. 下面先来看一下在Andr ...

  3. 【Android 应用开发】动态权限管理示例 ( 使用原生代码实现 | 申请权限 | 判定权限申请结果 | 判定 “ 不再询问 “ 情况 )

    文章目录 一.申请权限 二.判定权限申请结果 三.判定 " 不再询问 " 情况 四.完整代码示例 1.权限管理代码 2.主界面代码 3.执行结果 五.博客资源 一.申请权限 首先 ...

  4. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 最简单用法 | 一行代码搞定权限申请 | 推荐用法 )

    文章目录 一.添加依赖 二.在 AndroidManifest.xml 中配置权限 三.权限申请最简单用法 四.推荐使用的用法 五.GitHub 地址 上一篇博客 [Android 应用开发]Goog ...

  5. android 动态申请权限_你真的了解Android权限机制吗?

    码个蛋(codeegg)第 610 次推文 作者:FeelsChaotic 原文:https://www.jianshu.com/p/a17c8bed79d9 前言 Android将安全设计贯穿系统架 ...

  6. Android权限系统(三):运行时权限检查和申请,PermissionController

    请求应用权限的最佳实践   Google提供的请求应用权限的说明如下:请求应用权限   官方提供的模板使用了三个条件分支来请求应用权限:   1.checkSelfPermission用来检查应用是否 ...

  7. android京东打不开,京东商城Android权限申请流程分析

    京东动态申请定位权限分析 京东权限申请流程.png 1.安装完成后,权限状态为询问状态,此时,进入应用提示 首次进入App提示信息.png 1.1点击取消,对话框消失,Toast提示信息如下 需在手机 ...

  8. android 6.0蓝牙服务开启,Android应用开发之Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法...

    本文将带你了解Android应用开发Android 6.0 蓝牙搜索不到设备原因,MIUI权限申请机制方法,希望本文对大家学Android有所帮助. 为提供更高的数据保护   Android6.0版本 ...

  9. Android 申请权限前简单封装弹框阐述申请理由工具类,应付app合规检查

    近段时间浏览新闻经常会看到工信部通报某某app合规检查不合格,拒不整改,勒令全部下架这些信息,尤其是金融类app.个人信息的保护对用户确实是非常重要的,相信绝大多数行业工作者也感觉到了这些年国家对互联 ...

最新文章

  1. nginx技术(2)nginx的配置详解
  2. 搭建squid代理服务器
  3. 解决git clone慢问题
  4. 19-6/24作业:求四位会员卡号之和
  5. Centos7_ELK5.4.1配置部署
  6. CVS Branch 和 Merge 在 Eclipse 中的使用
  7. quartz获取开始结束时间_Springboot集成quartz
  8. 究竟如何保证session一致性?
  9. java界面混乱_JAVA界面不稳定
  10. 中国特种可注射仿制药市场趋势报告、技术动态创新及市场预测
  11. 解包操作符 python_用解包操作符 * 解包列表
  12. Restful无状态请求和网关
  13. backup exec删除备份文件
  14. 【Kindle】pdf转mobi适合kindle查看格式
  15. 狗年出生的宝宝取名都有哪些注意事项呢?起名真不是简单事
  16. python计算1的平方减2的平方加3的平方减4的平方怎么算_墙体的面积怎么算的快?墙的平方快速计算方法...
  17. 自定义注解,实现业务处理
  18. 都在这儿!最全的北斗厂家企业名单!
  19. 图卷积神经网络(GCN)综述与实现(PyTorch版)
  20. 计算机网络封装和解封的概念,以太网数据封装与解封过程

热门文章

  1. Difference between RawValue and FormattedValue
  2. Why product sales area is not replicated to CRM
  3. 如何禁止SAP Fiorigateway系统上的病毒扫描
  4. 使用cat写入内容到指定文件
  5. Jerry的WebClient UI 42篇原创文章合集
  6. oracle中角色和用户权限,Oracle用户、角色、权限管理
  7. java中的softreference_Java中的SoftReference和WeakReference有什么区别?
  8. python注释_python中的单行注释、多行注释
  9. boc android app,BOC
  10. datax mysql replace_DataX-MySQL(读写)