[Blankj/AndroidUtilCode]PermissionUtils的onGranted回调里面建议加一个isAll参数,表示是否全部都同意

2024-07-15 158 views
0
PermissionUtils.permission(PermissionConstants.CALENDAR, PermissionConstants.MICROPHONE)
                .rationale { activity, shouldRequest -> DialogHelper.showRationaleDialog(activity, shouldRequest) }
                .callback(object : PermissionUtils.FullCallback {
                    override fun onGranted(permissionsGranted: List<String>) {
                        LogUtils.d(permissionsGranted)
                        if (permissionsGranted.size == 2) {
                            showSnackbar(true, "Calendar or Microphone is granted")
                        }
                        itemsView.updateItems(bindItems())
                    }

                    override fun onDenied(permissionsDeniedForever: List<String>,
                                          permissionsDenied: List<String>) {
                        LogUtils.d(permissionsDeniedForever, permissionsDenied)
                        if (permissionsDeniedForever.isNotEmpty()) {
                            showSnackbar(false, "Calendar or Microphone is denied forever")
                        } else {
                            showSnackbar(false, "Calendar or Microphone is denied")
                        }
                        itemsView.updateItems(bindItems())
                    }
                })
                .request()

这个可以多个权限请求,有的同意,有的拒绝的情况下,不用总去判断permissionsGranted.size是否和自己传进来的一样大!,有时候会再加入有个权限,但是忘记吧permissionsGranted.size == 2改成permissionsGranted.size == 3,导致错误

回答

7

这个尽可能业务方自己的做吧,Array (PermissionConstants.CALENDAR, PermissionConstants.MICROPHONE) 声明为变量,然后用它的 size 比较即可,我这边修改 api 的成本比较大,成千上万开发者升级后都需要适配这个接口改动。

4

嗯,我就是建议,改动大就算了

5

我改动不大,主要是我这边修改接口对大家适配代价比较大。

8

最新版本有个 SingleCallback 接口满足你了。

3

好的,我看看