要关闭系统生成的运行时用户权限对话框,可以使用以下代码示例:
@Override
protected void onResume() {
super.onResume();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (!Settings.canDrawOverlays(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE);
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Settings.canDrawOverlays(this)) {
// 权限已经被授予,关闭系统生成的运行时用户权限对话框
finish();
}
}
}
}
这段代码的作用是检查是否有悬浮窗权限,如果没有,则跳转到系统的权限设置页面,让用户手动授予权限。在返回的时候,检查权限是否已经授予,如果是,则关闭当前Activity。
注意:这段代码只适用于Android 6.0及以上版本。对于低于6.0的版本,系统会自动分配权限,无法取消或关闭系统生成的运行时用户权限对话框。