我尝试使用PermissionsDispatcher来请求多重权限,适用于请求权限,但不会生成方法回调。
有人已经用过了吗?
项目和环境信息:
的gradle。
//Permissions
compile 'com.github.hotchemi:permissionsdispatcher:2.3.2'
annotationProcessor 'com.github.hotchemi:permissionsdispatcher-processor:2.3.2'
多个权限请求不起作用。 (不会生成拒绝,也不会再次询问流程。)
@NeedsPermission( {Manifest.permission.READ_CONTACTS,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE})
void canGo() {
//Permissions ok, go to next flow step.
}
如果我更改唯一权限工作正常并生成拒绝,从不再问流量。
@NeedsPermission(Manifest.permission.READ_CONTACTS)
void canGo() {
//Permissions ok, go to next flow step.
}
提前致谢!
答案 0 :(得分:0)
在尝试解决它的几个小时之后,我已经弄清楚lib如何工作以请求多个权限。根据官方报告的问题-57。
当@NeedsPermission的请求时,调用@OnPermissionDenied 与参数相同的字符串数组被拒绝。
如果我们有以下方法。
@NeedsPermission( {Manifest.permission.READ_CONTACTS,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE})
void canGo() {
//Permissions ok, go to next flow step.
}
所以,我们还需要:
@OnPermissionDenied( {Manifest.permission.READ_CONTACTS,
Manifest.permission.CAMERA,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE})
void deniedPermissionsFlow() {
//Permissionsdenied, block next flow step.
}