Android APP启动页面动态加载全部权限

摘要:
1、 6.0以上编写的动态加载权限是唯一需要由用户手动授予的权限(DangerousPermissions)。其他权限不需要加载权限组的权限日历。阅读_日历写入_日历相机联系阅读_联系人联系写入_联系人联系获取_账户位置ACCESS_ FINE_位置ACCESS_COARSE

一、写在前面

6.0以上动态加载权限加载的是,需要用户手动赋予的权限( Dangerous Permissions),只有这些,其他权限不用加载

所属权限组 权限
日历 READ_CALENDAR
日历 WRITE_CALENDAR
相机 CAMERA
联系人 READ_CONTACTS
联系人 WRITE_CONTACTS
联系人 GET_ACCOUNTS
位置 ACCESS_FINE_LOCATION
位置 ACCESS_COARSE_LOCATION
麦克风 RECORD_AUDIO
电话 READ_PHONE_STATE
电话 CALL_PHONE
电话 READ_CALL_LOG
电话 WRITE_CALL_LOG
电话 ADD_VOICEMAIL
电话 USE_SIP
电话 PROCESS_OUTGOING_CALLS
传感器 BODY_SENSORS
短信 SEND_SMS
短信 RECEIVE_SMS
短信 READ_SMS
短信 RECEIVE_WAP_PUSH
短信 RECEIVE_MMS
存储 READ_EXTERNAL_STORAGE
存储 WRITE_EXTERNAL_STORAGE

二、使用的框架RxPermissions2

build.gradle文件中
在dependencies {}中添加依赖
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.5@aar'

三、关键代码
 1 /**
 2  * 权限列表
 3  */
 4 String[] permissions = new String[]{
 5         Manifest.permission.CAMERA,
 6         Manifest.permission.READ_PHONE_STATE,
 7         Manifest.permission.WRITE_EXTERNAL_STORAGE,
 8         Manifest.permission.READ_EXTERNAL_STORAGE
 9 };
10 
11 /**
12  * 请求权限
13  */
14 private void requestPermissions() {
15     RxPermissions rxPermission = new RxPermissions(this);
16     rxPermission
17             .request(permissions)//多个权限用","隔开
18             .subscribe(granted -> {
19                 if (granted) {
20                     //获得了所有权限
21                    textView.setAnimation(animationSet);
22                 } else {
23                     //至少有一个权限没有获得
24                     Toast.makeText(SplashActivity.this,"请给应用赋予全部权限,否则无法使用",Toast.LENGTH_SHORT).show();
25                     finish();
26                 }
27             });
28 
29 }

四、该框架升级比较快,网上很多写这个框架的博文都并不实用,还是要注意其github网站说明文档

地址:https://github.com/tbruyelle/RxPermissions

免责声明:文章转载自《Android APP启动页面动态加载全部权限》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle 批处理 执行 sqlAndroid-APK绕过签名下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

redis设计与实现(一)简单动态字符串

redis是C语言实现的,但redis中的字符串并没有直接用C语言中的字符串表示,而是自己构建了一种简单的动态字符串类型(SDS)。 在redis里面,C字符串只用作字面量,用在一些不会修改的地方,eg:打日志。 SDS的结构: struct sdshdr{ int free; int len; char buf[]; }...

Spring Cloud入门-Nacos实现注册和配置中心(Hoxton版本)

文章目录 摘要 Nacos简介 使用Nacos作为注册中心 安装并运行Nacos 创建应用注册到Nacos 负载均衡功能 使用Nacos作为配置中心 创建nacos-config-client模块 在Nacos中添加配置 Nacos的动态刷新配置 参考资料 使用到的模块 项目源码地址 项目使用的Spring Cloud为Hoxton版本,S...

centos tail查看最后几行动态查看日志等使用

tail :输出文件的最后几行。 用于linux查看日志的时候很方便,假如日志文件为:Console.log 用法: 1. tail Console.log 输出文件最后10行的内容 2. tail -nf Console.log --n为最后n行 输出文件最后n行的内容,同时 监视文件的改变,只要文件有一变化就同步刷新并显示出来 3...

Nginx核心知识100讲学习笔记(陶辉)Nginx架构基础(四)

一、红黑树 1、红黑树 2、红黑树复杂度 3、使用红黑树的模块 1、本地内存做的红黑树 ngx_conf_module ngx_event_timer_rbtree #管理定时器的红黑树 2、管理定时器的红黑树 Ngx_http_file_cache Ngx_http_geo_module Ngx_http_limit_conn_module Ng...

360独角兽实习,连载周记(gnuradio 低功耗蓝牙BLE 综合工具模块编写)

(有点乱,之后会有整理) 最近在用写一套gnuradio的OOT模块,主要用来进行BLE嗅探的,github上有了一些工具,可是他们并没有很好的模块化,于是打算自己写一个,这样以后做一些其他的项目,模块可以在grc流图里直接用,复用性会好很多。 我在github上找到了一个项目叫做BLE_dump,我参考了他的解调方式,事实证明这种解调方式的效果非常好,具...

Linux性能优化实战学习笔记:第五十一讲

一、上节回顾 上一节,我带你一起学习了常见的动态追踪方法。所谓动态追踪,就是在系统或者应用程序正常运行的时候,通过内核中提供的探针,来动态追踪它们的行为,从而辅助排查出性能问题的瓶颈。 使用动态追踪,可以在不修改代码、不重启服务的情况下,动态了解应用程序或者内核的行为,这对排查线上问题、特别是不容易重现的问题尤其有效。 在 Linux 系统中,常见的动态追...