安卓6.0之后——动态获取权限封装
来源:互联网 发布:网络优化工程师培训费 编辑:程序博客网 时间:2024/06/05 09:56
转自:
今天将项目中需要授权的地方,增加了判断 -----------关于6.0权限的封装。大家知道,在android6.0之后,谷歌为了更进一步保护用户的手机安全及知情权,在权限管理方面做了改变。在6.0之前,我们只需要在Manifest里增加对应的权限标签即可,如:
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
但是现在就不同了,比如调用照相机。用户的系统设置默认不授予你的应用这个权限,而你此时没有进行动态授权,那不同产商就会有不同的问题(轻则不能调用,重则直接崩溃,小编的小米就是直接崩)说了这么多,让我们看看代码。在BaseActivity做好封装,具体的子类只要进行调用,去实现具体的逻辑就好
四部曲:第一步,先判断是否有权限
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
第二步:如果没有权限,就进行请求
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
第三步:请求授权后的回调
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
最后,第四步,留一个方法,给子类重写,实现你所需要的业务逻辑(比如 拍照)
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
OK,封装完成
接下来,在需要进行授权的Activity中 extends 这个封装了权限请求的BaseActvity
在需要调用的地方进行判断
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
OK,这样就搞定了。
写到这里,总结一下上面的思路,
就是,
一,判断权限、
二、有权限,执行 / 没权限,请求权限
三、请求后的权限回调(这里注意CODE,要匹配)
四、业务逻辑(有权限则直接从第二步跳到这步,没权限则在第三步的回调中调用)
上面的封装方法,最好在Manifest里还是像原先一样,将需要的权限先添加上,这样就可以兼容6.0以上和6.0以下的版本。
6.0以下不会有任何影响。
再说一说友盟的实现逻辑
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
其实思路大抵相同,只是友盟是通过判断版本号,是否大于23,。
上面这段代码是直接从友盟分享中拷出来的,mPermissionList 这个数组用在我们第一种封装的方法上也是一样的。
0 0
- 安卓6.0之后——动态获取权限封装
- 安卓6.0之后——动态获取权限封装
- 安卓6.0动态获取权限
- 安卓6.0动态获取权限
- 关于安卓6.0权限的动态获取
- 安卓动态获取权限及权限介绍
- 安卓6.0获取权限
- 安卓6.0权限申请封装
- 安卓6.0+动态权限申请
- 安卓6.0动态权限配置查询
- 安卓6.0以后动态申请权限
- 安卓6.0 的动态权限
- 安卓6.0以上动态权限问题
- 安卓6.0动态申请权限
- 安卓6.0.x 获取root权限
- 安卓6.0 获取相机权限
- 安卓开发——AndroidStudio中获取联网权限
- 安卓动态申请权限
- Java多线程核心技术(三):线程间通信
- android应用退出后在任务管理器隐藏
- OpenVPN GUI连接显示黄色
- jsp页面关于Java,js和html的加载顺序
- Python 图像处理: 生成二维高斯分布蒙版
- 安卓6.0之后——动态获取权限封装
- Oracle数据库用户查询常用命令
- Java线程同步之同步锁
- JS时间戳转YYYY-MM-DD 形式的时间显示
- LeetCode :Number Complement
- Python开发-Python基础学习-Python基本语法
- 不少Gate或Node运算子 的反向传播代码
- 【Web前端】COOKIE与SESSION的机制区别
- webstorm2016.2sn