用于 Android 权限处理的 Dexter 库始终触发 PermissionDenied 的回调



我尝试使用名为 Dexter 的库处理 Android 版本 23 中的新权限模型:

https://github.com/Karumi/Dexter

问题是,如果我需要检查权限访问SYSTEM_ALERT_WINDOW回调 onPermissionDeny 总是在没有显示权限对话框的情况下调用。

PermissionListener dialogPermissionListener = new PermissionListener() {
                @Override public void onPermissionGranted(PermissionGrantedResponse response) {
                    Logger.d("onPermissionGranted");
                }
                @Override public void onPermissionDenied(PermissionDeniedResponse response) {
                    Logger.d("onPermissionDenied");
                }
                @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) {
                    Logger.d("onPermissionRationaleShouldBeShown");
                }
            };
            Dexter.checkPermission(dialogPermissionListener, Manifest.permission.SYSTEM_ALERT_WINDOW);

如何以正确的方式进行权限检查?

注意:权限检查在服务中处理,而不是在活动中处理,因为服务应在应用程序中所有其他窗口上方显示SYSTEM_ALERT_WINDOW(授予权限)。

非常感谢您的任何建议。

还应该在 Android 清单中添加权限.xml

SYSTEM_ALERT_WINDOW和WRITE_SETTINGS的权限被Android视为特殊权限。Dexter不处理这些,您需要以老式的方式请求它们。

[

在库本身中已经提到过][1]https://github.com/Karumi/Dexter#caveats

最新更新