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. @PermissionFail(requestCode = PHOTO_PERMISS)
  7. public void requestPhotoFail(){
  8. //失败之后的处理,我一般是跳到设置界面
  9. AppUtil.goToSetting(mContext);
  10. }

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

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

转载于:https://www.cnblogs.com/Free-Thinker/p/9646329.html

6.0动态加载权限用PermissionGen相关推荐

  1. VB6.0动态加载ActiveX控件漫谈[转]

    [转帖]VB6.0动态加载ActiveX控件漫谈http://www.7880.com/Info/Article-4b559560.html 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控 ...

  2. Asp.net 2.0 动态加载其他子目录用户控件问题

    通常我们要在程序中动态加载用户控件: 方法很简单直接在程序里键入: (usercontrol type)a = (usercontrol type)Page.LoadControl("~/x ...

  3. extjs6.0 动态加载_Extjs入门之动态加载树代码

    Extjs动态加载树的实现代码,需要的朋友可以参考下. Extjs动态加载树,首先在数据库里面设计存放树信息的表 USE [KimiExtjs] GO /****** 对象: Table [dbo]. ...

  4. Asp.net2.0动态加载用户控件的三种方法

    方法一: 直接拖放的用户控件 <!--这是某个aspx页--> ..... <%@ Register Src="TestControl.ascx" TagName ...

  5. vue系统权限(动态加载路由方式)

    目录 1.注册vue-router 2.声明 默认路由 和权限路由 3.用vuex实现全局登录.退出登录等方法 4.用vuex模块单独写权限路由的判断 5.监听路由跳转实现动态加载权限菜单 需要用到动 ...

  6. linux 下创建并动态加载.so 文件

    最简单的生成, 动态加载.so 文件的例子 //test.cpp #ifndef _TEST_H    #define _TEST_H       #include <iostream> ...

  7. Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2

    1.RBAC权限管理模型 一.RBAC权限模型简介 RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制.模型中有几个关键的术语: 用户:系统接口及功能访问的操 ...

  8. vue 动态修改后端请求_vue-element-admin实战 | 第二篇: 最小改动接入后台实现根据权限动态加载菜单...

    一. 前言 本篇基于 有来商城 youlai-mall微服务项目,通过对vue-element-admin的权限菜单模块理解个性定制其后台接口,实现对vue-element-admin工程几乎不做改动 ...

  9. nginx 稳定版 1.16.0 发布,支持动态加载 SSL 证书

    开发四年只会写业务代码,分布式高并发都不会还做程序员?   nginx 1.16.0 稳定版已发布,包含来自 1.15.x 主线分支的新功能和错误修复: 针对流模块(stream module)中的 ...

最新文章

  1. matlab面向对象排序,MATLAB面向对象编程学习笔记(一)
  2. 计算机网络研讨_[即将举行的网络研讨会]对Kubernetes进行故障排除:您需要具备的7个关键组件...
  3. [ USACO 2017 FEB ] Why Did the Cow Cross the Road III (Gold)
  4. jqGrid如何设置jqGrid第一次初始化时不加载任何数据?实现方法!
  5. redmine常见问题
  6. 在生产中配置和使用AWS EKS
  7. java异常体系_Java异常体系(Throwable、Error、Exception)
  8. 设计模式09-组合模式
  9. 软件架构师的12项修炼[2]——关系技能修炼(2)——领导力、政治
  10. 锐浪报表数据源access_C# 锐浪报表 示例源码
  11. java迷宫算法_迷宫算法(JAVA实现)
  12. 计算机保研面试 / 考研复试常见问题整理
  13. 我国人口预计 15 年内是会逐渐分散在大中小城市,还是继续向大城市集中?我们应留在大城市发展吗?
  14. Android斗地主游戏源码
  15. 现在流行的台式计算机搭配,现在台式电脑的主流配置有哪些?
  16. 安卓自定义view之——可滑动时间轴(时间刻度尺)
  17. 设计一个长方体类Cuboid(Java)
  18. jre7换jre8问题
  19. BoundingBox 图片分割
  20. ubuntu16.04安装NVIDA驱动

热门文章

  1. java map 允许重复_java中key值可以重复的map:IdentityHashMap
  2. 南邮 计算机网络,南邮计算机网络_期末复习纲要-精简版教材.pdf
  3. coroutine php_PHP 协程实现
  4. 死锁产生的原因及条件和手写死锁
  5. 十五. Python基础(15)--内置函数-1
  6. Hibernate中主键生成策略
  7. mybatis里oracle与MySQL的insert_update
  8. CAEmitterLayer 和 CAEmitterCell 粒子发射
  9. sql where in 排序问题
  10. C#操作XML之——读取XML文件