rxPermissions.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Consumer() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
//表示用户同意权限
Toast.makeText(SingeActivity.this,
“用户同意使用权限”, Toast.LENGTH_SHORT).show();
} else {
//表示用户不同意权限
Toast.makeText(SingeActivity.this,
“用户拒绝使用权限”, Toast.LENGTH_SHORT).show();
}
}
});
}
- 同时请求多个权限
private void requestRxPermissions() {
rxPermissions = new RxPermissions(this);
rxPermissions.request(Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.READ_CALL_LOG)
.subscribe(new Consumer() {
@Override
public void accept(Boolean aBoolean) throws Exception {
if (aBoolean) {
//当所有权限都允许,才会到这里
Toast.makeText(SomeActivity.this,
“用户同意所有权限”, Toast.LENGTH_SHORT).show();
} else {
// //只要有一个权限没同意,就到这里
//下一次申请只申请没同意的权限
Toast.makeText(SomeActivity.this,
“用户拒绝了部分权限”, Toast.LENGTH_SHORT).show();
}
}
});
}
- 分别申请多个权限
private void requestRxPermissions() {
rxPermissions = new RxPermissions(this);
rxPermissions.requestEach(Manifest.permission.RECORD_AUDIO,
Manifest.permission.CAMERA,
Manifest.permission.GET_ACCOUNTS,
Manifest.permission.READ_CONTACTS,
Manifest.permission.READ_CALENDAR,
Manifest.permission.SEND_SMS,
Manifest.permission.READ_SMS,
Manifest.permissio
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
n.CALL_PHONE)
.subscribe(new Consumer() {
@Override
public void accept(Permission permission) throws Exception {
if (permission.name.equals(Manifest.permission.CAMERA)) {
//使用permission.name可以获得指定权限获得后的操作
Toast.makeText(OneByOneActivity.this,
“照相机权限授权了”, Toast.LENGTH_SHORT).show();
}
/**
-
这里需要注意,当我们使用requestEach后,上面对应的权限,
-
下面都会执行一遍
-
例如,你上面8个权限都同意后,然后到达这里,
-
在走8次的permission.granted的判断语句
-
因此,使用时再加上permission.name判断一下更为合理
*/
if (permission.granted) {
//用户已经同意该权限
Toast.makeText(OneByOneActivity.this,
“用户已经同意该权限”, Toast.LENGTH_SHORT).show();
} else if (permission.shouldShowRequestPermissionRationale) {
// 用户拒绝了该权限,没有选中『不再询问』(Never ask again),
// 那么下次再次启动时,还会提示请求权限的对话框
Toast.makeText(OneByOneActivity.this,
“用户拒绝了该权限,没选中『不再询问』”, Toast.LENGTH_SHORT).show();
} else {
// 用户拒绝了该权限,并且选中『不再询问』