android动态权限适配:基于RxJava2后的RxPermissions的快速使用

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 {

// 用户拒绝了该权限,并且选中『不再询问』

上一篇:Java学习笔记123——集合—泛型


下一篇:吴裕雄 python 神经网络——TensorFlow ckpt文件保存方法