6.0动态加载权限用PermissionGen
ndroid 6.0 新增加了运行时的动态添加权限,在此介绍一个第三方库,PermissionGen,可以很方便简洁的增加 6.0权限
首先给大家上 PermissionGen 库地址:https://github.com/lovedise/PermissionGen
下面给大家详细介绍它的使用:
1.引用库:
在 app gradle 中引入:
compile 'com.lovedise:permissiongen:0.0.6'
在需要权限检测的地方 调用:
- private void requestPhotoPermiss(){
- PermissionGen.with(mContext)
- .addRequestCode(PHOTO_PERMISS)
- .permissions(
- Manifest.permission.WRITE_EXTERNAL_STORAGE,
- Manifest.permission.CAMERA)
- .request();
- }
其中 PermissionGen.with(mContext) 中的 mContext 可以是 Activity,也可以是 Fragment ,photo_permiss 这个常量是自己定义的,之后需要重写
onRequestPermissionsResult
方法,重写如下:
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) {
- PermissionGen.onRequestPermissionsResult(this, requestCode, permissions, grantResults);
- }
之后会异步返回两个方法,成功和失败,它们是用注解写的,方法里注解的requestCode 要和你之前定义的常量一致’,方法如下
- @PermissionSuccess(requestCode = PHOTO_PERMISS)
- public void requestPhotoSuccess(){
- //成功之后的处理
- //.......
- }
- @PermissionFail(requestCode = PHOTO_PERMISS)
- public void requestPhotoFail(){
- //失败之后的处理,我一般是跳到设置界面
- AppUtil.goToSetting(mContext);
- }
goToSetting(Context Context)方法代码如下:
- /***
- * 去设置界面
- */
- public static void goToSetting(Context context){
- //go to setting view
- Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
- Uri uri = Uri.fromParts("package", getPackageName(), null);
- intent.setData(uri);
- context.startActivity(intent);
- }
注意,在引入 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相关推荐
- VB6.0动态加载ActiveX控件漫谈[转]
[转帖]VB6.0动态加载ActiveX控件漫谈http://www.7880.com/Info/Article-4b559560.html 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控 ...
- Asp.net 2.0 动态加载其他子目录用户控件问题
通常我们要在程序中动态加载用户控件: 方法很简单直接在程序里键入: (usercontrol type)a = (usercontrol type)Page.LoadControl("~/x ...
- extjs6.0 动态加载_Extjs入门之动态加载树代码
Extjs动态加载树的实现代码,需要的朋友可以参考下. Extjs动态加载树,首先在数据库里面设计存放树信息的表 USE [KimiExtjs] GO /****** 对象: Table [dbo]. ...
- Asp.net2.0动态加载用户控件的三种方法
方法一: 直接拖放的用户控件 <!--这是某个aspx页--> ..... <%@ Register Src="TestControl.ascx" TagName ...
- vue系统权限(动态加载路由方式)
目录 1.注册vue-router 2.声明 默认路由 和权限路由 3.用vuex实现全局登录.退出登录等方法 4.用vuex模块单独写权限路由的判断 5.监听路由跳转实现动态加载权限菜单 需要用到动 ...
- linux 下创建并动态加载.so 文件
最简单的生成, 动态加载.so 文件的例子 //test.cpp #ifndef _TEST_H #define _TEST_H #include <iostream> ...
- Day239.RBAC模式、动态加载用户权限资源规则数据规则、【记住我】注销多次登录图片验证码session验证码验证功能 -springsecurity-jwt-oauth2
1.RBAC权限管理模型 一.RBAC权限模型简介 RBAC权限模型(Role-Based Access Control)即:基于角色的权限控制.模型中有几个关键的术语: 用户:系统接口及功能访问的操 ...
- vue 动态修改后端请求_vue-element-admin实战 | 第二篇: 最小改动接入后台实现根据权限动态加载菜单...
一. 前言 本篇基于 有来商城 youlai-mall微服务项目,通过对vue-element-admin的权限菜单模块理解个性定制其后台接口,实现对vue-element-admin工程几乎不做改动 ...
- nginx 稳定版 1.16.0 发布,支持动态加载 SSL 证书
开发四年只会写业务代码,分布式高并发都不会还做程序员? nginx 1.16.0 稳定版已发布,包含来自 1.15.x 主线分支的新功能和错误修复: 针对流模块(stream module)中的 ...
最新文章
- matlab面向对象排序,MATLAB面向对象编程学习笔记(一)
- 计算机网络研讨_[即将举行的网络研讨会]对Kubernetes进行故障排除:您需要具备的7个关键组件...
- [ USACO 2017 FEB ] Why Did the Cow Cross the Road III (Gold)
- jqGrid如何设置jqGrid第一次初始化时不加载任何数据?实现方法!
- redmine常见问题
- 在生产中配置和使用AWS EKS
- java异常体系_Java异常体系(Throwable、Error、Exception)
- 设计模式09-组合模式
- 软件架构师的12项修炼[2]——关系技能修炼(2)——领导力、政治
- 锐浪报表数据源access_C# 锐浪报表 示例源码
- java迷宫算法_迷宫算法(JAVA实现)
- 计算机保研面试 / 考研复试常见问题整理
- 我国人口预计 15 年内是会逐渐分散在大中小城市,还是继续向大城市集中?我们应留在大城市发展吗?
- Android斗地主游戏源码
- 现在流行的台式计算机搭配,现在台式电脑的主流配置有哪些?
- 安卓自定义view之——可滑动时间轴(时间刻度尺)
- 设计一个长方体类Cuboid(Java)
- jre7换jre8问题
- BoundingBox 图片分割
- ubuntu16.04安装NVIDA驱动
热门文章
- java map 允许重复_java中key值可以重复的map:IdentityHashMap
- 南邮 计算机网络,南邮计算机网络_期末复习纲要-精简版教材.pdf
- coroutine php_PHP 协程实现
- 死锁产生的原因及条件和手写死锁
- 十五. Python基础(15)--内置函数-1
- Hibernate中主键生成策略
- mybatis里oracle与MySQL的insert_update
- CAEmitterLayer 和 CAEmitterCell 粒子发射
- sql where in 排序问题
- C#操作XML之——读取XML文件