Android权限处理的Dexter库总是在PermissionDenied上触发回调

Android权限处理的Dexter库总是在PermissionDenied上触发回调,android,permissions,Android,Permissions,我试图使用名为Dexter的库处理Android版本23中的新权限模型: 问题是,如果我需要检查对系统\u警报\u窗口的权限访问,则始终会在不显示权限对话框的情况下调用回调onPermissionDenied PermissionListener dialogPermissionListener = new PermissionListener() { @Override public void onPermissionGranted(PermissionGra

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

问题是,如果我需要检查对系统\u警报\u窗口的权限访问,则始终会在不显示权限对话框的情况下调用回调onPermissionDenied

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);
如何以正确的方式进行权限检查

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


非常感谢你的建议

您还应该在AndroidManifest.xml中添加权限

您还应该在AndroidManifest.xml中添加权限

Android认为权限系统警报窗口和写入设置是特殊的。德克斯特不会处理这些问题,你需要以老式的方式请求它们

[已经在lib本身中提到过][1]

Android认为权限系统警报窗口和写入设置是特殊的。德克斯特不会处理这些问题,你需要以老式的方式请求它们

[已经在lib本身中提到过][1]

您是否尝试将
checkPermission
方法更改为
checkpermissionsamethread
?我怀疑您正在另一个线程中接收回调,因为您正在使用服务。此外,这可能很有用:您是否尝试将
checkPermission
方法更改为
checkpermissionsamethread
?我怀疑您正在另一个线程中接收回调,因为您正在使用服务。此外,这可能很有用: