【发布时间】:2017-03-14 05:18:43
【问题描述】:
我遇到了一个问题。当用户成功授予所有必需的权限时,不会发生这种情况。它发生在用户拒绝许可时。我向用户显示一个对话框以启用 Apps->AppName->Settings 的权限。我把用户带到那里。但是当用户尝试启用任何权限时,它会显示消息。 检测到系统覆盖并且不允许用户启用任何权限。我搜索了很多谷歌和 Stackoverflow,但没有找到任何解决方案。有些人通过禁用 toast 解决了解决方案,但我没有显示任何 toast。
注意:只有在任何权限被拒绝时才会出现此问题。
这是我的代码
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();
}
【问题讨论】:
标签: android overlay android-permissions application-settings runtime-permissions