如何解决授予权限后未调用 RxPermissions
我正在使用 RxPermissions 来处理我的项目中的权限。
'com.github.tbruyelle:rxpermissions:0.12'
'io.reactivex.rxjava3:rxjava:3.0.4'
这是我处理 CAMERA
权限的代码:
new RxPermissions((FragmentActivity) context).request(Manifest.permission.CAMERA)
.subscribe(granted -> {
if(granted){
Intent packageReceiveIntent = new Intent(context,ReceivePackageActivity.class);
context.startActivity(packageReceiveIntent);
}
});
这被称为 onClick
事件。
出于某种原因,在 Consumer
为 permission
之后没有调用 granted
中的代码,我必须点击按钮两次才能打开活动。
我在应用程序的不同部分使用了相同的代码,它运行良好,我不明白为什么在 Fragment 中它运行良好,而在另一个中却没有。
我也这样试过,但没有成功:
new RxPermissions(requireActivity()).request(Manifest.permission.CAMERA)
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.computation())
.subscribe(aBoolean -> {
if (aBoolean) {
Intent packageReceiveIntent = new Intent(requireActivity(),ReceivePackageActivity.class);
requireActivity().startActivity(packageReceiveIntent);
}
});
解决方法
我对 RxPermissions 有同样的问题。为了解决这个问题,我检查,如果没有获得许可,那么我请求许可
Observable.just(isGranted(Manifest.permission.CAMERA))
.flatMap { granted ->
if (granted)
Observable.just(true)
else rxPermissions.request(permission)
}
.subscribe {
}
fun checkIsGranted(permission: String): Boolean {
return ContextCompat.checkSelfPermission(activity,permission) == PackageManager.PERMISSION_GRANTED;
}
它是用kotlin写的,你可以改成java。快乐编码!
,我遇到的情况是Activity被销毁了,所以没有调用RxPermissions的回调。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。