一、写在前面
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