上篇博客解决了安卓权限的调用和成功与否的验证

流程:  申请权限--->已授权--->直接操作

---->未授权--->返回fasle

可参考  :https://blog.csdn.net/u013203480/article/details/78789055

但是对于用户拒绝,并且不再提示没有一个好的处理,因此在此基础上改进了代码,如有不足之处请及时告知

第二版流程

需要更改的代码

1.使用

  PermissionManager.getInstance().getCameraPermission(context, new PermissionManager.RequestPermission() {@Overridepublic void isOk() {Log.e("isOK","++++++++++++++++++++++++++++++++++++");}@Overridepublic void never() {Log.e("never","++++++++++++++++++++++++++++++++++++");}@Overridepublic void refuse() {Log.e("refuse","++++++++++++++++++++++++++++++++++++");}});

2.管理类

import android.Manifest;
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v7.app.AppCompatActivity;/*** Created by biyunlong on 2017/7/7.* Make progress every day*/public class PermissionManager {private String storage=Manifest.permission.WRITE_EXTERNAL_STORAGE;private String camera =Manifest.permission.CAMERA;private final int requestcode_camera=1;private static PermissionManager permissionManager;private RequestPermission requestPermission;public static PermissionManager getInstance(){if(null==permissionManager){permissionManager=new PermissionManager();}return permissionManager;}//照相机和文件权限public void getCameraPermission(Context context,RequestPermission requestPermission){this.requestPermission=requestPermission;PermissionUtil.getInstance().checkPermission(context,new String[]{storage,camera},requestcode_camera);}/*** 一个或多个权限请求结果回调** @param requestCode* @param permissions* @param grantResults*/public void onRequestPermissionsResult(Activity context,int requestCode, String[] permissions, int[] grantResults) {if(requestPermission==null){return;}boolean hasAllGranted = true;for (int i = 0; i < grantResults.length; ++i) {if (grantResults[i] == PackageManager.PERMISSION_DENIED) {hasAllGranted = false;// 可以推断出用户选择了“不在提示”选项,在这种情况下需要引导用户至设置页手动授权if (!ActivityCompat.shouldShowRequestPermissionRationale(context, permissions[i])) {requestPermission.never();} else {//权限请求失败,但未选中“不再提示”选项requestPermission.refuse();}break;}}if (hasAllGranted) {//权限请求成功requestPermission.isOk();}}public interface  RequestPermission{public void isOk();public void never ();public void refuse();}
}

3.基类

 @Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {PermissionManager.getInstance().onRequestPermissionsResult(this, requestCode, permissions, grantResults);}

安卓权限工具类(二)相关推荐

  1. 9.10 安卓常用工具类之一 权限 ---- PermissionUtil

    权限 ----  PermissionUtil package com.behe.treasure.util; import android.app.Activity; import android. ...

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

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

  3. Java 线程 - 基础及工具类 (二)

    Java 并发系列文章 Java 线程 - 并发理论基础(一) Java 线程 - 基础及工具类 (二) Java 线程 - 并发设计模式 (三) Java 线程(二) 通用的线程生命周期 Java ...

  4. 工具类二十 基于oshi的运行环境监控工具类

    OSHI是Java的免费的基于JNA的(本机)操作系统和硬件信息库.它不需要安装任何其他本机库,并且旨在提供一种跨平台的实现来检索系统信息,例如OS版本,进程,内存和CPU使用率,磁盘和分区,设备,传 ...

  5. android m权限工具类,android M权限适配,简单工具类

    很简单没什么说的, 因为项目大了,不能轻易引入第三方库,同时确实也没必要为了适配下权限就引入一个库. 这里写了个处理权限的工具类(部分借鉴的,勿喷),不嫌弃的话拿去! 用法: 1.申请权限: Perm ...

  6. 关于安卓常用工具类集成

    码云地址: https://github.com/motosheep/androidutils.git 20200514 1增加xrecyclerview--XRecyclerView 2增加震动工具 ...

  7. Android开发之6.0动态权限工具类(高德地图官方扣出来的)附源码

    感觉这个权限申请类写的比较好. 使用方法:activity直接继承就可以了. 看下mainactivity.java package com.qfy.permissiondemo;import and ...

  8. 9.10 安卓常用工具类之一 对话 ---- DialogUtil

    对话 ---- DialogUtil package com.behe.treasure.util; import android.annotation.SuppressLint; import an ...

  9. Android 安卓状态栏工具类(沉浸式、字体颜色等)

    文章目录 使用案例(Kotlin) 工具类 StatusBarUtil 使用案例(Kotlin) //沉浸式实现 StatusBarUtil.immersive(this)//填充View //id: ...

  10. Android学习之工具类二:播放声音工具类

    ​ import android.content.Context; import android.media.AudioManager; import android.media.SoundPool; ...

最新文章

  1. 半导体基础知识(2):PN结二极管和二极管特性
  2. 字符串作为freemarker模板的简单实现例子
  3. access开发精要(12)-文本 和 备注 数据类型格式(1)
  4. 关于mysql的几个问题
  5. python工程控件_工程脚本插件方案 - c集成Python基础篇
  6. Servlet的单例模式
  7. Altium Designer(六):Make Library
  8. Android Studio 3.3发布:官方支持导航编辑器
  9. 几个比较好的app开发框架
  10. 机器人足球比赛linux,机器人足球实验报告.doc
  11. Ubuntu20.4安装gnuradio艰辛之路
  12. thinkpad E430拆装与升级
  13. linux创建sudo用户组,如何将用户添加到sudo组
  14. 骑行318、 2016.7.20
  15. 微信语音能保存多久服务器,微信语音播放失败?可能是这几个原因导致的,看完你就懂了...
  16. java map集合的等号改为逗号_老司机用一篇博客带你快速熟悉Dart语法
  17. php对接阿里云API调用企业税号查询的高级实战案例解析(下拉筛选查询、远程调用API、xm-select组件应用)
  18. 基于Web SCADA平台构建实时数字化产线 - 初篇
  19. 没有权限访问网络资源/Windows7虚拟机共享文件
  20. python代码缩进和冒号_Python缩进和冒号详解

热门文章

  1. 点云IO篇之stl文件读写
  2. 计算机无法关机 总是自动启动,win10电脑关机后自动开机怎么办_win10电脑关机后自动开机的详细解决方法...
  3. 软件架构师之拥抱变化
  4. 萌新的linux之旅27
  5. 【016】基于51单片机的pwm加速减速步进电机Proteus仿真设计与实物设计
  6. matlab 查找字符串数组,Matlab之字符串数组查找
  7. [回头再说] 国内网页游戏背景音乐
  8. 学生信息系统课程设计java_Java课程设计——学生信息系统(团队)
  9. Apache CXF前端应用(Frontend)
  10. 上偏续关系哈斯图_A={a,b,c}定义在P(A)上的包含关系是一个偏序关系,哈斯图怎么画?...