我遇到了问题。当用户成功提供所有必需的权限时,不会发生这种情况。当用户拒绝许可时,就会发生这种情况。我向用户显示一个对话框,以启用 Apps-> AppName->设置的权限。我把用户带到那里。但是当用户尝试启用任何权限时,它会显示该消息。检测到系统覆盖,并且不允许用户启用任何权限。我搜索了谷歌和Stackoverflow很多,但没有找到任何解决方案。有些人通过禁用吐司解决了解决方案,但我没有露出任何祝酒词。
注意:只有在拒绝任何权限时才会出现此问题。
这是我的代码
private void showPermissionDialog(String message, final int permissionCode){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Permission Required");
if(permissionCode == Constants.REQ_CODE_PERMISSION_SYSTEM_OVERLAY_WINDOW) {
builder.setMessage(Constants.getOverlayNotEnabledMessage(Constants.getInstance(this)));
} else {
builder.setMessage(message + " To enable go to apps, Select " +
getResources().getString(R.string.app_name) + " Enable permissions now?");
}
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
if(permissionCode == Constants.REQ_CODE_PERMISSION_READ_CONTACTS){
MainActivity.this.finish();
}
}
});
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(permissionCode == Constants.REQ_CODE_PERMISSION_SYSTEM_OVERLAY_WINDOW) {
requestOverlayPermissions();
} else {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getApplicationContext().getPackageName(), null);
intent.setData(uri);
MainActivity.this.startActivityForResult(intent, permissionCode);
}
}
});
AlertDialog alertDialog = builder.create();
alertDialog.setCancelable(false);
alertDialog.show();
}
答案 0 :(得分:0)
在android M中,没有解决此问题的方法。如果您的应用程序需要SYSTEM_OVERLAY_WINDOW
权限,则无法启用或禁用“设置”中的权限。唯一的解决方案(开发人员方面没有解决方案)是清晰的应用数据,这将再次请求权限