Android 设置权限未按应有的方式运行

Android Settings permissions not not acting as they should

我需要征得用户的许可。我需要的权限之一是 ACTION_MANAGE_OVERLAY_PERMISSION,另一个是 Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION。当您在下面的代码中看到请求时,它会将用户带到“设置”屏幕,以便用户可以从那里勾选权限。

Intent intent = new Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
        Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, OVERLAY_PERMISSION_REQUEST_CODE);

在某些 Android 手机和 Android 版本上,它会将用户直接带到特定的应用程序设置(调用它的应用程序),在其他设备上它会打开应用程序列表用户必须从中找到应用程序,然后勾选权限。在大多数情况下,Androids 低于 10 时,它会打开特定的应用程序设置 window,当它为 10 或更高时,它会打开列表。
有没有办法让它始终打开当前打开的应用程序设置?

我尝试添加:

intent.addCategory("android.intent.category.DEFAULT");
intent.setData(Uri.parse("package:" + getApplicationContext().getPackageName()));

但这也无济于事。

其次,有没有办法在不打开 Settings 菜单的情况下请求此权限和其他 Settings 权限,而不是在应用程序内的对话框中执行此操作?
如果没有,那么有没有办法一个接一个地请求多个 Settings 权限,因为我的应用程序需要两个 Settings 类型的权限。

编辑

这是我所说的特定应用程序设置与列表的意思。

左图列出了所有应用,右图打开了特定应用(如果您单击列表中的应用,则会发生这种情况)。

现在有些情况下是直接打开右图,但大部分是打开左图。有没有办法一直强制打开右图?

Is there a way to force open the right picture at all times?

没有

设置应用通常由设备制造商进行大量修改。他们可以为所欲为。这包括忽略 Uri 或彻底删除第三方对此屏幕的访问权限,后者是 the documentation is warning against:

In some cases, a matching Activity may not exist, so ensure you safeguard against this.

如果您制作自己的 Android 固件,您可以确保此 Intent 操作对于任何设备 运行 您的固件都能如您所愿。