ndroid 6.0 新增加了运行时的动态添加权限,在此介绍一个第三方库,PermissionGen,可以很方便简洁的增加 6.0权限

首先给大家上  PermissionGen 库地址:https://github.com/lovedise/PermissionGen

下面给大家详细介绍它的使用:

1.引用库:

在 app gradle 中引入:

compile 'com.lovedise:permissiongen:0.0.6'

在需要权限检测的地方 调用:

  1. private void requestPhotoPermiss(){
  2. PermissionGen.with(mContext)
  3. .addRequestCode(PHOTO_PERMISS)
  4. .permissions(
  5. Manifest.permission.WRITE_EXTERNAL_STORAGE,
  6. Manifest.permission.CAMERA)
  7. .request();
  8. }

其中  PermissionGen.with(mContext) 中的 mContext 可以是 Activity,也可以是 Fragment  ,photo_permiss 这个常量是自己定义的,之后需要重写

onRequestPermissionsResult

方法,重写如下:

  1. @Override
  2. public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
  3. PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
  4. }

之后会异步返回两个方法,成功和失败,它们是用注解写的,方法里注解的requestCode 要和你之前定义的常量一致’,方法如下

  1. @PermissionSuccess(requestCode = PHOTO_PERMISS)
  2. public void requestPhotoSuccess(){
  3. //成功之后的处理
  4. //.......
  5. }
  6.  
  7. @PermissionFail(requestCode = PHOTO_PERMISS)
  8. public void requestPhotoFail(){
  9. //失败之后的处理,我一般是跳到设置界面
  10. AppUtil.goToSetting(mContext);
  11. }

goToSetting(Context Context)方法代码如下:

  1. /***
  2. * 去设置界面
  3. */
  4. public static void goToSetting(Context context){
  5. //go to setting view
  6. Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
  7. Uri uri = Uri.fromParts("package", getPackageName(), null);
  8. intent.setData(uri);
  9. context.startActivity(intent);
  10. }

注意,在引入  Gen的库的时候,可能会出现同步失败的问题,出现如下类似问题:

Error:(7, 9) Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9
Error:(7, 9) Execution failed for task ':importdemo:processDebugManifest'.
> Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9
is also present at com.pnikosis:materialish-progress:1.0:13:9 value=(@drawable/ic_launcher)
Suggestion: add 'tools:replace="android:icon"' to <application> element a

这是由于 库中引用的 value 和 你项目中 mainfast 中的 value 发生冲突,解决办法如下:

在你的 application 中加上 类似的 tools replace 代码,然后在 xml 文件头 添上 tools 的声明,rebuild 你的项目即可解决冲突

最后要说的是,其实最近网上用的比较 多的库 是 AndPermission 库,但是我当时在引用的时候发现 他的 success 和
failed 方法没有调用,由于时间紧急,便用了这个比较老的库,但是库虽老,用起来还是不错的,对于 AndPermission
库的使用大家若出现和我一样的问题,欢迎讨论,再此附上 AndPermission 库地址:

https://github.com/yanzhenjie/AndPermission

大家有什么交流的话,随时留言,谢谢诶

6.0动态加载权限用PermissionGen的更多相关文章

  1. shiro不重启动态加载权限

    最近一朋友让我帮他做一个后台权限管理的项目.我就在我原来的项目加加改改但是还是不理想,查了不少资料也走了不了弯路...... shiro基本的配置我就不多说了这个很简单自己查查资料就完成----下面是 ...

  2. SpringBoot集成Shiro 实现动态加载权限

    一.前言 本文小编将基于 SpringBoot 集成 Shiro 实现动态uri权限,由前端vue在页面配置uri,Java后端动态刷新权限,不用重启项目,以及在页面分配给用户 角色 . 按钮 .ur ...

  3. [ActionScript 3.0] AS3.0 动态加载显示内容

    可以将下列任何外部显示资源加载到 ActionScript 3.0 应用程序中: 在 ActionScript 3.0 中创作的 SWF 文件 — 此文件可以是 Sprite.MovieClip 或扩 ...

  4. 基于xml 实现动态加载权限功能树列表---EFSFrame企业级开发架构

    在学习EFSFrame框架的过程中,感触最深的就是通过xml来实现前台与后台数据的交互,页面设计灵活,不用管后台如何写的,前台与后台的交互唯一的交互通道都是xml,在我们需要添加页面.添加规定的格式的 ...

  5. java反射动态加载类Class.forName();

    1,所有的new出来的对象都是静态加载的,在程序编译的时候就会进行加载.而使用反射机制Class.forName是动态加载的,在运行时刻进行加载. 例子:直接上两个例子 public class Ca ...

  6. Asp.Net Core 项目实战之权限管理系统(8) 功能菜单的动态加载

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  7. 利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载

    简述 可能大家都知道,php中有一个函数叫debug_backtrace,它可以回溯跟踪函数的调用信息,可以说是一个调试利器. 好,来复习一下 01 one(); 02 03 function one ...

  8. (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】

    原文地址:http://www.cnblogs.com/melonblog/archive/2013/05/09/3062303.html 原文作者:豆浆油条 - melon 本文示例代码测试环境是W ...

  9. Vue + Element UI 实现权限管理系统 前端篇(十):动态加载菜单

    动态加载菜单 之前我们的导航树都是写死在页面里的,而实际应用中是需要从后台服务器获取菜单数据之后动态生成的. 我们在这里就用上一篇准备好的数据格式Mock出模拟数据,然后动态生成我们的导航菜单. 接口 ...

随机推荐

  1. NPOI操作Excel常用函数

    最近因项目接触了NPOI,感觉还是蛮不错的,网络上的教程普遍版本较老,本篇记录所常用操作,采用NPOI 2.0版本. 推荐: NPOI官方网站 NPOI 1.2.4/1.2.5 官方教程 新建Exce ...

  2. Socket_leaks open socket #5024 left in connection

    open socket left in connection http://mailman.nginx.org/pipermail/nginx/2012-September/035627.html D ...

  3. JavaScript数据结构与算法-集合练习

    集合的实现 function Set () { this.dataStore = []; this.add = add; this.remove = remove; this.size = size; ...

  4. 网络安装CentOS6.4

    第一步:所需工具安装包下载地址: http://115.com/file/antbtamu#网络安装CentOS.rar(或者下载NetbootM.exe和hfs.exe) 第二步:将CentOS6. ...

  5. UML初览(转)

    原文:UML初览 本章使用一个简单的例子对UML中所使用的概念和视图进行初览.本章的目的是要将高层UML概念组织成一系列较小的视图和图表来可视化说明这些概念,说明如何用各种不同的概念来描述一个系统以及 ...

  6. 【生产问题】--8KW的数据表导致业务卡顿

    问题描述:业务突然变得巨卡 分析思路: (1)分析用户请求进程:查看是否有长期运行霸占锁的情况,或者进程数量巨多.很明显我这里就是巨多,正常情况一般0~40来个的样子,在业务使用高峰期居然达到了140 ...

  7. 试着利用BAPI 寻找F-59创建凭证的函数

    功能块代码 F-59开发类 FIBP事务说明 支付请求 事物:FBP1Screen 0BKPF-BLART = AB________________________________________从程 ...

  8. spring tiles界面为空白

    Caused by: org.apache.jasper.JasperException: /WEB-INF/views/admin_template.jsp(3,62) Unable to read ...

  9. Python基础-re正则模块

    一.简介: 正则表达式:是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过re模块实现,正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行. 二.字 ...

  10. python——单例模式

    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在. 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如, ...