如何在Android 30中打开位置权限设置?

13
我想在Android 30上通过按钮单击直接打开位置权限设置。我该怎么做?

输入图像描述

下面是我的代码。这将导航到权限页面,
final Intent i = new Intent();
i.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setData(Uri.parse("package:" + context.getPackageName()));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
i.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(i);

1
你找到解决方案了吗? - user1443721
不,我还没有找到任何解决方案。@user1443721 - Vishal Vaishnav
1
@VishalVaishnav 解决方案在这里 https://dev59.com/eFIG5IYBdhLWcg3w2VQZ#63487691 ,你不需要意图,只需要授予 ACCESS_FINE_LOCATION 权限,如果已经授予,则尝试授予 ACCESS_BACKGROUND_LOCATION,它会自动打开应用程序的系统位置权限页面,不要忘记您需要显示请求权限的理由的 UI https://developer.android.com/training/permissions/requesting 阅读有关 shouldShowRequestPermissionRationale 的内容。 - user25
2个回答

10

首先请求 ACCESS_FINE_LOCATION(或粗略)的权限。如果获得了该权限,请请求 ACCESS_BACKGROUND_LOCATION 权限。但仅当您的 Target SDK 30 时,它才会直接打开应用程序位置设置。


4
这只在第一次起作用。我不知道为什么谷歌不说明原因。 - Gilberto Ibarra
1
可能 Google 希望用户知道如何从系统屏幕手动授予/阻止权限,在此过程中,他们使我们开发者的生活更加困难。 - Beemo
是的,我同意这对用户体验来说是个笑话...看起来谷歌并不在意。 - Zhar
@GilbertoIbarra 这个一次性后台权限行为是否有跟踪问题? - TWiStErRob
@TWiStErRob 这是预期的行为,不是问题,只需遵循谷歌建议显示权限,而不是自定义流程。 - Gilberto Ibarra

0

目前为止,在安卓系统中没有直接打开权限选择页面的方法。 安卓11提供了深度链接,如果用户请求后台位置,则可以直接打开权限选择页面。

否则,没有其他方法可以直接打开权限选择页面。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接