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

一、写在前面

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:[email protected]‘

三、关键代码
 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

原文地址:https://www.cnblogs.com/jsben/p/8424498.html

时间: 2024-10-09 16:21:02

Android APP启动页面动态加载全部权限的相关文章

Android 插件化之动态加载jar

有时候会看到一些应用对应的SDcard里的文件夹里有 ***.jar 等文件,现在明白这些文件大概是用来做应用内自动更新用的. 打比方说,类似eclipse 可以通过预留接口,安装各种插件一样. Android 也可以通过动态加载jar 来实现类似的业务代码更新:(这里所说的jar要通过dx工具来转化成Dalvik byte code,下文会讲到) 注意:首先需要了解一点:在Android中可以动态加载,但无法像Java中那样方便动态加载jar 原因:Dalvik虚拟机如同其他Java虚拟机一样

web页面动态加载UserControl,并调用用户控件中的方法来初始化控件

1,HTML页 头部注册: <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/CeShiBu.ascx" TagPrefix="UserControl" TagName="CeShiBu"%> <%@ Register Src="~/WorkLog/WorkLogNewV1/UserControl/KaiFaBu.ascx" TagPrefix=&quo

Android之根布局动态加载子布局时边距设置无效问题

Android大部分的控件都会有padding和layout_margin两个属性,一般来说它们的区别是: padding:控件中的内容离控件边缘的距离. margin:  控件离它的父控件边缘的距离. 今天做了一个由根布局动态加载子布局的实验,结果发现子布局中的这两个属性可以按预期的效果显示,但是给根布局设置的padding并没有对被加载的子布局产生效果. 代码如下: 根布局文件名为activity_main.xml,其xml文件定义的内容为: <LinearLayout xmlns:andr

对于页面动态加载的元素事件无效的解决方案

当用ajax动态获取的数据放在新建的div中进行展示时,当你提前写一些 mouseover,click 操作时会发现不起作用 解决方法: 把事件绑定到它的父元素上面 例如,每次读到数据会将它放在新建的 class = data的div中显示,并且用append方法把他添加在 id= parent 的div中.这个时候假如对data这个块有点击事件,平常可能会写 $('.data').click(function(){...}); 当点击这个div时,不会有反应.这时候可以再一开始将事件绑定到父元

Android 插件开发,做成动态加载

为什么需要插件开发: 相信你对Android方法数不能超过65K的限制应该有所耳闻,随着应用程序功能不断的丰富,总有一天你会遇到一个异常: Conversion to Dalvik format failed:Unable toexecute dex: method ID not in [0, 0xffff]: 65536 可能有些同学会说,解决这个问题很简单,我们只需要在Project.proterty中配置一句话就Ok啦, dex.force.jumbo=true 是的,加入了这句话,确实可

Android UI编程(8)——动态加载Fragment

通过动态加载fragment实现在一个Activity拥有3种不同的布局,直接看效果图吧: 常规模式下: 点击家居控制: 代码: AndroidManifest.xml--没有做任何修改,创建工程默认 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package

[JS前端开发] js/jquery控制页面动态加载数据 滑动滚动条自动加载事件

页面滚动动态加载数据,页面下拉自动加载内容 相信很多人都见过瀑布流图片布局,那些图片是动态加载出来的,效果很好,对服务器的压力相对来说也小了很多 有手机的相信都见过这样的效果:进入qq空间,向下拉动空间,到底部时,会动态加载剩余的说说或者是日志 今天我们就来看看他们的实现思路和js控制动态加载的代码 下面的代码主要是控制滚动条下拉时的加载事件的 在下面代码说明出,写上你的操作即可,无论是加载图片还是加载记录数据  都可以 别忘了引用jquery类库 [JavaScript] 纯文本查看 复制代码

AngularJs根据访问的页面动态加载Controller的解决方案

最近AngularJs很火.... 废话不多说了,如主题吧 用Ng就是想做单页面应用(simple page application),就是希望站内所有的页面都是用Ng的Route,尽量不用location.href,但是这样的webapp好处是很多,但是美中不足的是当你的webapp随着时间的推移,用户变多,功能变得更丰富,controller也变得越来越多,你不得不把所有的controller当作全局模块进行加载,以使得在站内任何一个页面中按F5刷新后能route到任意一个其他页面,而不会发

JSP页面动态加载到iframe

main 页面有个iframe 域 <iframe id="myiframe" framespacing="0" frameborder="NO" Scrolling="auto" width=806 height=510 name="mytrees" /> 点击个人信息通过Action 获取到个人信息跳到 显示信息的JSP,想把这个JSP 显示在 main 里面 就指定 <a href=