1、方法一

       private static final int PERMISSION_REQUEST_CODE = 1;private String[] mPermissions = {Manifest.permission.CAMERA};/*** 申请权限结果返回处理*/@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);Log.i("lgq","onRequestPermissionsResult ....."+requestCode);if (requestCode == PERMISSION_REQUEST_CODE) {boolean isAllGranted = true;for (int grant : grantResults) {  // 判断是否所有的权限都已经授予了Log.i("lgq","申请权限结果===="+grant);if (grant != PackageManager.PERMISSION_GRANTED) {isAllGranted = false;break;}}if (isAllGranted) { // 所有的权限都授予了
//                    startCamera();Log.i("lgq","同样同意kaiqil ..onRequestPermissionsResult...");} else {// 提示需要权限的原因Log.i("lgq","同样反对kaiqil ..onRequestPermissionsResult...");AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setMessage("拍照需要允许权限, 是否再次开启?反对").setTitle("提示").setPositiveButton("确认", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {ActivityCompat.requestPermissions(MainActivity.this, mPermissions, PERMISSION_REQUEST_CODE);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {dialog.dismiss();finish();}});builder.create().show();}}}

当第一次点击禁止时:

2、方法二

1、添加依赖

//RxPermission权限申请
implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'
//RxBinding
implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0'

2、申请权限,处理申请结果

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
/*** 所有需要的权限类型*/
private static final String[] PERMISSIONS = {Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};
/*** 动态获取权限*/
public void getPermission() {RxPermissions rxPermissions = new RxPermissions(MainActivity.this);rxPermissions.request(PERMISSIONS).subscribe(new Consumer<Boolean>() {@Overridepublic void accept(Boolean granted) throws Exception {if(granted){//权限申请成功Toast.makeText(MainActivity.this,"cg",Toast.LENGTH_SHORT).show();}else{//权限申请不成功,弹窗提示退出Toast.makeText(MainActivity.this,"cg222",Toast.LENGTH_SHORT).show();}}});
}

进阶方法:

implementation 'com.yanzhenjie:permission:1.1.2'
public void checkPermission(){//先判断是否有相机权限AndPermission.with(this).requestCode(100).permission(Permission.CAMERA).callback(listener).rationale(mRationaleListener).start();
}//用户拒绝一次权限后,再次申请时检测到已经申请过一次该权限了,允许开发者弹窗说明申请权限的目的,获取用户的同意后再申请权限,避免用户勾选不再提示,导致不能再次申请权限
private RationaleListener mRationaleListener = new RationaleListener() {@Overridepublic void showRequestPermissionRationale(int requestCode, final Rationale rationale) {if(100==requestCode){Log.i("lgq","拒绝了。。。");}}
};//相机权限监听
PermissionListener listener = new PermissionListener() {@Overridepublic void onSucceed(int requestCode, @NonNull List<String> grantPermissions) {if(100==requestCode){//打开摄像头Log.i("lgq","同意了了。。。");}}@Overridepublic void onFailed(int requestCode, @NonNull List<String> deniedPermissions) {if(100==requestCode){//相机AndPermission.defaultSettingDialog(MainActivity.this, 100).setTitle("权限申请失败").setMessage("需相机基本权限,否则您将无法正常使用,请在设置中授权").setPositiveButton("好,去设置").setNegativeButton("", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {return;}}).show();}}
};

Android 申请权限结果返回处理相关推荐

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

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

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

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

  3. android申请权限一次性申请多个,Android 批量申请权限

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

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

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

  5. 93.Android申请权限

    权限组列表: https://blog.csdn.net/lanxuan1993/article/details/102954531 一.RxPermissions https://blog.csdn ...

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

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

  7. 【Android 应用开发】Google 官方 EasyPermissions 权限申请库 ( 完整代码示例 | 申请权限 | 申请权限原理对话框 | 引导用户手动设置权限对话框 )

    文章目录 一.申请权限 二.申请权限原理对话框 三.引导用户手动设置权限对话框 四.在 AndroidManifest.xml 中配置权限 五.完整代码示例 六.GitHub 地址 一.申请权限 申请 ...

  8. Android动态权限申请

    从Android 6.0开始,权限不再是在manifest文件中粘贴一下即可,这时候权限也正式走进大家的视野.项目的6.0适配就是我做的,当时没有仔细总结,最近在另一个项目添加权限的时候发现,同一个功 ...

  9. Android PermissionUtils:运行时权限工具类及申请权限的正确姿势

    Android PermissionUtils:运行时权限工具类及申请权限的正确姿势 ifadai 关注 2017.06.16 16:22* 字数 318 阅读 3637评论 1喜欢 6 Permis ...

最新文章

  1. python操作neo4j
  2. 这款IDEA插件,可以让你用中文编码哟
  3. 割点、割边(桥) tarjan
  4. webpack常用配置
  5. EAGER的获取是代码的味道
  6. 病毒的手工排除与分析(更新完毕)
  7. 运维监控软件 wgcloud 更新,v3.2.7 重构告警模块
  8. SLAM--搭建自己的视觉里程计VO-RGBD相机(一)
  9. 计算机网络基础 — Bypass 网卡
  10. latex编译pdf winedt_XeLaTeX及WinEdt6.0入门指南资料.pdf
  11. pl/sql如何使用
  12. 2023秋招--广州光娱--游戏客户端--面经
  13. 换号码的烦恼引起的思考
  14. 手机触屏特效Java_手机触屏触摸特效javascript-TouchSwipe(依赖于jquery库)中文说明...
  15. eos 区块链 java 开发_EOS区块链用什么语言开发?
  16. 服务器客户端证书,客户端如何验证HTTPS服务端证书信息
  17. 【日常训练】Help Far Away Kingdom(Codeforces 99A)
  18. matlab并行计算 parfor
  19. 怎么创建小程序?如何创建一个小程序呢?
  20. C语言版--单链表排序,冒泡排序,选择排序,插入排序,快速排序,应有尽有,保证看懂,没有bug!交换节点版本!

热门文章

  1. [js] for in 和 for of 的区别?
  2. 前端学习(2793):完成联系我们页面和地图
  3. 工作108:swiper使用
  4. 前端学习(1681):前端系列实战课程之让蛇动起来
  5. 前端学习(1258):then参数中的函数返回值
  6. html:(8):span标签和q标签
  7. java学习(92):线程的创建方法一
  8. bind安装和主要配置
  9. java组件自适应窗口大小_java swing 窗口和控件自适应大小
  10. java pdf文件压缩_PDF文件压缩转换教程