一写在前面
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
三关键代码
- /**
- * 权限列表
- */
- String[] permissions = new String[] {
- Manifest.permission.CAMERA,
- Manifest.permission.READ_PHONE_STATE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE,
- Manifest.permission.READ_EXTERNAL_STORAGE
- };
- /**
- * 请求权限
- */
- private void requestPermissions() {
- RxPermissions rxPermission = new RxPermissions(this);
- rxPermission.request(permissions) // 多个权限用 "," 隔开
- .subscribe(granted - >{
- if (granted) {
- // 获得了所有权限
- textView.setAnimation(animationSet);
- } else {
- // 至少有一个权限没有获得
- Toast.makeText(SplashActivity.this, "请给应用赋予全部权限, 否则无法使用", Toast.LENGTH_SHORT).show();
- finish();
- }
- });
- }
四该框架升级比较快, 网上很多写这个框架的博文都并不实用, 还是要注意其 github 网站说明文档
地址: https://github.com/tbruyelle/RxPermissions
来源: http://www.bubuko.com/infodetail-2490291.html