java - Android 设置权限没有发挥应有的作用

标签 java android android-intent android-permissions android-settings

我需要征求用户的许可。我需要的权限之一是 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 版本上,它会将用户直接带到其他设备上的特定应用程序设置(调用该应用程序的应用程序),它会打开应用程序列表,用户必须从中找到该应用程序并然后勾选权限。在大多数情况下,在低于 10 的 Android 上,它会打开特定的应用程序设置窗口,当 Android 版本为 10 或更高时,它会打开列表。
有没有办法让它始终打开当前打开的应用程序设置?

我尝试添加:

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

但这也没有帮助。

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

编辑

这就是我所说的特定应用程序设置与列表的含义。

All application list Specific app

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

现在在某些情况下,它会直接打开右侧图片,但大多数情况下会打开左侧图片。有没有办法始终强制打开正确的图片?

最佳答案

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 操作的行为符合您的要求。

关于java - Android 设置权限没有发挥应有的作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70201972/

相关文章:

java - 突然奇怪的 eclipse 行为

java - 安卓资源管理

android - 哪个Android开发博客的演练和教程最多?

android - 在两个 Activity 之间传递值数组

java - org.mockito.exceptions.misusing.NotAMockException

java - 两个依赖链 OSGI

Java 正则表达式 : matching a char except when preceded by another char

Android:我可以将单个 InputStream 用于多种方法吗?

android - 在 Activity 之间传递 Parcelable 项目

java - 如何使用恢复按钮进入上一个 Activity ?