我尝试使用名为 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