Android PermissionsDispatcher - 要求多个权限,不生成方法

时间:2017-04-19 14:28:52

标签: android android-studio android-6.0-marshmallow android-permissions android-library

我尝试使用PermissionsDispatcher来请求多重权限,适用于请求权限,但不会生成方法回调。

有人已经用过了吗?

项目和环境信息:

  • Android Studio 2.3.1
  • buildToolsVersion' 25.0.2'

的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.
}

提前致谢!

1 个答案:

答案 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.
}