# XPermissionUtils

可能是最精简的Android6.0运行时权限处理方式,支持Rationale提示,只有一个类,100行代码,所有弹窗等操作由用户自行处理,在Demo中也有提供代码示例

流程图

引入方式

1、gradle引入

dependencies {

compile 'com.andsync.xpermission:XPermissionUtils:1.3'

}

2、Maven引入

com.andsync.xpermission

XPermissionUtils

1.3

pom

使用方式

以打开相机为例

1、首先AndroidManifest中配置必要的权限

2、在基类中加上回调方法

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,

@NonNull int[] grantResults) {

XPermissionUtils.onRequestPermissionsResult(this, requestCode, permissions, grantResults);

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

}

3、调用工具类方法

注意

requestPermissions第一个参数必须为activity

XPermissionUtils.OnPermissionListener监听中有两个回调方法

onPermissionGranted()授权成功后的回调

onPermissionDenied(final String[] deniedPermissions, boolean alwaysDenied)授权失败后的回调

其中deniedPermissions标识被拒绝的权限alwaysDenied标识是否永远被拒绝

申请权限由String数组决定,如new String[] {Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO}

private void doOpenCamera() {

XPermissionUtils.requestPermissions(this, RequestCode.CAMERA, new String[] { Manifest.permission.CAMERA },

new XPermissionUtils.OnPermissionListener() {

@Override

public void onPermissionGranted() {

if (PermissionHelper.isCameraEnable()) {

Toast.makeText(MainActivity.this, "打开相机操作", Toast.LENGTH_LONG).show();

} else {

DialogUtil.showPermissionManagerDialog(MainActivity.this, "相机");

}

}

@Override

public void onPermissionDenied(final String[] deniedPermissions, boolean alwaysDenied) {

Toast.makeText(context, "获取相机权限失败", Toast.LENGTH_SHORT).show();

if (alwaysDenied) { // 拒绝后不再询问 -> 提示跳转到设置

DialogUtil.showPermissionManagerDialog(MainActivity.this, "相机");

} else { // 拒绝 -> 提示此公告的意义,并可再次尝试获取权限

new AlertDialog.Builder(context).setTitle("温馨提示")

.setMessage("我们需要相机权限才能正常使用该功能")

.setNegativeButton("取消", null)

.setPositiveButton("验证权限", new DialogInterface.OnClickListener() {

@RequiresApi(api = Build.VERSION_CODES.M)

@Override

public void onClick(DialogInterface dialog, int which) {

XPermissionUtils.requestPermissionsAgain(context, deniedPermissions,

RequestCode.CAMERA);

}

})

.show();

}

}

});

}

特别鸣谢

License

Copyright 2017 AndSync

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

获取权限android sync,GitHub - AndSync/XPermissionUtils: 可能是最精简的Android6.0运行时权限处理方式,支持Rationale提示...相关推荐

  1. 这可能是最精简的Android6.0运行时权限处理,百行代码的工具类,支持Rationale,附:各种权限详细处理

    0x00:前言 对于Android6.0运行时权限的处理方式网上有很多,包括注解,RxJava等等.一直没有正面提到我关心的问题–如果我不在Activity或者Fragment里面,需要运行时权限该怎 ...

  2. Android6.0运行时权限解决方案

    今天在测试APP的时候发现部分手机APP定位权限使用不了.看了一下机型都是Android6.0以上版本的Android手机. 之前就听说Android6.0以上版本权限管理更严格了,没想到今天踩坑了. ...

  3. Android6.0运行时权限处理

    前言 在Android6.0版本以前,往往是应用程序需要什么权限直接在manifest.xml中直接声明,当你安装程序的时候,如果不想让该程序使用某种权限,唯一的办法只能是不装这个应用,但是我们生活中 ...

  4. Android6.0运行时权限(危险权限列表)

    从 Android 6.0(API 23)开始,用户开始在应用运行时向其授予权限,而不是在应用安装时授予.这种权限机制可以让用户更好的管理应用的权限,保障用户隐私. Android将权限分为普通权限和 ...

  5. Android 8.0 运行时权限策略变化和适配方案

    Android8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过AndroidStudio3.0 Canary版本下载Android O最新的系统映像的Developer Pr ...

  6. Android 8.0学习(18)--- Android8.0运行时权限策略变化和适配方案

    Android8.0运行时权限策略变化和适配方案    在 Android O 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用.对 ...

  7. Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架

    Android6.0执行时权限解析,RxPermissions的使用.自己封装一套权限框架 在Android6.0中,新添加了一个执行时的权限,我相信非常多人都已经知道了.预计也知道怎么用了,这篇博客 ...

  8. Android8.0运行时权限策略变化和适配方案

    版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com Android8.0也就是Android O即将要发布了,有很多新特性,目前我们可以通过Android ...

  9. Android 6.0 运行时权限处理完全解析

    一.概述 随着Android 6.0发布以及普及,我们开发者所要应对的主要就是新版本SDK带来的一些变化,首先关注的就是权限机制的变化.对于6.0的几个主要的变化,查看查看官网的这篇文章http:// ...

最新文章

  1. Ubuntu 16.04 安装anaconda3详细教程(从下载源到测试成功)
  2. Readline-select
  3. css中颜色的表示方法
  4. cocos2d-x打包后手机运行闪退_三国志11手机版,问题解决手册 1.4.4版本
  5. Unity Built-in Shader转URP Shader 接口查询对照表
  6. java web 多语言_基于 Selenium WebDriver 实现多语言环境下自动化截图
  7. 【转】语义化版本 2.0.0
  8. MySQL step by step 安装实战
  9. 如何自制会跳舞的AI小姐姐?这有一份易上手的开源攻略
  10. 《HBase企业应用开发实战》—— 3.6 本章小结
  11. 今天辞去了联盟的版主职务
  12. java 查看jar 版本信息_Jar包版本查看方法
  13. c语言 软件编程入门自学,软件编程入门自学
  14. 苹果无线网服务器绕过id,最新绕过苹果id方法
  15. NAND Flash底层原理,SLC MLC TLC比较
  16. AUTOSAR基础篇之StbM
  17. 三分求单峰/单谷函数极值
  18. 大数据和小数据有什么区别?
  19. 怎样夸学计算机的人,学学古人是怎样夸人有才的
  20. python kivy教程,Python Kivy 中文教程:安装(Windows)

热门文章

  1. 友善mini2440终于发布CE6.0的BSP了!
  2. 列车车次查询-余票查询-Api接口
  3. esp8266的SDK开发pwm有感:解决LED灯不能熄灭,微微亮问题。
  4. uvm_tlm_req_rsp_channel
  5. Google DeepMind介绍
  6. 【c++】c++中a++和++a详解
  7. period_diff()函数不能用于计算两个日期间的天数
  8. linux查看开关机记录 centos,CentOS linux 详细开机流程
  9. 微信转发软件后缀_APP分享文件给微信好友
  10. 机器视觉、目标检测常见应用场景