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'

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

   

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426824.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实例40:python

#将一个数组逆序输出 #!/usr/bin/python -- coding: UTF-8 -- a[0,1,2,3,4,5,6,7,8,9] for i in range(0,10): print(a.pop(),end’’)

康宁玻璃ct值计算公式_【钦州】CT室铅板生产厂家

【钦州】CT室铅板生产厂家石膏板等做复合层&#xff0c;整个工程下来人工费&#xff0c;造价费贵多了。而硫酸钡粉工艺造价费也走高&#xff1f;原因在于&#xff0c;它工艺本身就要考虑墙壁表面平整与否&#xff0c;干燥速度&#xff0c;气候&#xff0c;温度等诸多因素&#…

实例41:python

#模仿静态变量的用法。 #!/usr/bin/python -- coding: UTF-8 -- def varfunc(): var 0 print (‘var %d’ % var) var 1 if name ‘main’: for i in range(3): varfunc() 类的属性 作为类的一个属性吧 class Static: StaticVar 5 def varfunc(self): self.StaticVar…

实例42:python

#题目&#xff1a;学习使用auto定义变量的用法。 #!/usr/bin/python -- coding: UTF-8 -- num 2 def autofunc(): num 1 print (‘internal block num %d’% num) num 1 for i in range(3): print (‘The num %d’ % num) num 1 autofunc()

实例43:python

#模仿静态变量(static)另一案例。 #!/usr/bin/python -- coding: UTF-8 -- class Num: nNum 1 def inc(self): self.nNum 1 print (‘nNum %d’ % self.nNum) if name ‘main’: nNum 2 inst Num() for i in range(3): nNum 1 print (‘The num %d’ % nNum) inst.i…

mac使用Shell(终端)SSH连接远程服务器

前提&#xff1a;要有你需要连接的服务器的ip&#xff0c;端口号&#xff0c;服务器上的账户和密码1、首先打开终端&#xff0c;然后输入sudo su - 回车进入根目录2、然后输入&#xff1a;ssh -p 端口号 服务器用户名ip &#xff08;例如ssh -p 22 userkunyu119.29.37.63&#…

手机钢琴软件测试自学,手机钢琴app哪个好_自学钢琴软件哪个好_安卓钢琴软件哪个好...

核心提示&#xff1a;手机钢琴的软件有很多,哪些手机钢琴软件是我们想要的呢,下面多特小编就跟您推荐几款比较合适的软件或者app给您参考手机钢琴的软件有很多,哪些手机钢琴软件是我们想要的呢,下面多特小编就跟您推荐几款比较合适的软件或者app给您参考手机上模拟钢琴app是一款…

实例44:python

#两个 3 行 3 列的矩阵&#xff0c;实现其对应位置的数据相加&#xff0c;并返回一个新矩阵&#xff1a; #X [[12,7,3], [4 ,5,6], [7 ,8,9]] #Y [[5,8,1], [6,7,3], [4,5,9]] #!/usr/bin/python -- coding: UTF-8 -- x [[12,7,3], [4,5,6], [7,8,9]] y [[5,8,1]…

SQLServer之创建非聚集索引

开始之前 典型实现 可以通过下列方法实现非聚集索引&#xff1a; UNIQUE 约束 在创建 UNIQUE 约束时&#xff0c;默认情况下将创建唯一非聚集索引&#xff0c;以便强制 UNIQUE 约束。 如果不存在该表的聚集索引&#xff0c;则可以指定唯一聚集索引。 有关详细信息&#xff0c;请…

outlook2013邮箱找不到服务器,outlook发邮件总提示找不到

2004-11-09无法连接到服务器。 帐户: pop3.sina.com.cn, 服务器: pop3.sina.com.cn, 协议: POP3, 端口: 110, 安全(SSL): 否, 套接字错误: 10060, 错误号: 0x800CCC0E0x800CCC0E 联机到服务器失败&#xff0c;无法与主机建立联机。等一段时间再试。或者用ping 等网络命令测试一…

实例45:python

#累计求和 #!/usr/bin/python -- coding: UTF-8 -- tmp 0 for i in range(1,101): tmp i print (‘The sum is %d’ % tmp)

迁移学习综述

参考论文&#xff1a;A Survey on Transfer Learning 1、Introduction 在机器学习和数据挖掘中有一个很普遍的假设就是训练数据和测试数据来源于统一特征空间并服从相同的分布。而当测试数据分布发生改变之后&#xff0c;我们又不得不从新收集同分布的训练数据并从新训练模型。…

实例46:python

#题目&#xff1a;求输入数字的平方&#xff0c;如果平方运算后小于 50 则退出。 #!/usr/bin/python -- coding: UTF-8 -- TRUE 1 FALSE 0 def SQ(x): return x * x print (‘如果输入的数字小于 50&#xff0c;程序将停止运行。’) again 1 while again: num int(input…

常见笔顺错误的字_最全汉字书写笔顺规则

最全汉字书写笔顺规则汉字笔画名称汉字书写顺序一个字先写哪一笔&#xff0c;后写哪一笔&#xff0c;叫做笔顺。汉字的笔顺有一定规律&#xff0c;一般如下&#xff1a;常见的笔画笔顺易错字&#xff1b;"忄" 先写点和点&#xff0c;最后写竖。"匕" 先写撇…

ajax时间控件,带有ajax的JQuery中的插件datetimepicker出错

我尝试这样做,禁用所有日期并启用我通过参数传递的日期这段代码不起作用$.ajax({method: "GET",url: "url",}).success(function(msg) {console.log(JSON.parse(msg));var disableIni JSON.parse(msg);var disable [];for (var i 0; i < disableIni.…

实例47:python

#题目&#xff1a;两个变量值互换。 encoding:utf-8 ‘’’ 三种简单的变量交换方法——参数法&#xff1b;相互运算法&#xff1b;字符拼剪法 ‘’’ def shuru(): a input(‘请输入a的值’) b input(“请输入b的值”) return a, b def change1(a, b):#加入第三变量 t …

ajax 批量上传图片插件,TinyMCE多图片批量上传(Ajax)教程

需要用上插件&#xff1a;axupimgs插件作者&#xff1a;莫若卿支持版本&#xff1a;5.0.4支持语言&#xff1a;仅中文插件版本&#xff1a;1.6一、axupimgs 插件作用&#xff1a;这是一个tinymce多图片批量上传插件&#xff0c;支持拖拽文件添加&#xff0c;拖拽支持白名单&…

实例48:python

#题目&#xff1a;数字比较。 #!/usr/bin/env python -- coding:utf-8 -- def compare(num1, num2): if num1 > num2: print("%s大于%s" % (num1, num2)) elif num2 > num1: print("%s大于%s" % (num2, num1)) else: print("%s等于%s" %…

实例49:python

#题目&#xff1a;使用lambda来创建匿名函数。 #!/usr/bin/python -- coding: UTF-8 -- MAXIMUM lambda x,y : (x > y) * x (x < y) * y MINIMUM lambda x,y : (x > y) * y (x < y) * x if name ‘main’: a 10 b 20 print (‘The largar one is %d’ %…

java程序员经常使用的Intellij Idea插件

大概从去年年初开始慢慢抛弃习惯多年的eclipse&#xff0c;开始使用Intellij Idea,以下是我使用过的一些Intellij Idea插件&#xff1a; 1.lombok https://plugins.jetbrains.com/plugin/6317-lombok-plugin 支持lombok的各种注解&#xff0c;从此不用写getter setter这些 可以…