【问题标题】:How to open location permission settings in Android 30?如何在 Android 30 中打开位置权限设置?
【发布时间】:2020-07-01 04:40:33
【问题描述】:

我想在按钮点击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);

【问题讨论】:

  • 找到解决办法了吗?
  • 不,我还没有找到任何解决方案..@user1443721
  • @VishalVaishnav 解决方案在这里stackoverflow.com/a/63487691/4548520你不需要意图,你只需要授予ACCESS_FINE_LOCATION权限,如果它被授予然后尝试授予ACCESS_BACKGROUND_LOCATION它会自动打开应用程序的系统位置权限页面,不要忘记您需要显示的 UI 以及请求权限的理由 developer.android.com/training/permissions/requesting 阅读关于 shouldShowRequestPermissionRationale

标签: android android-studio kotlin


【解决方案1】:

ACCESS_FINE_LOCATION(或粗略)的首次请求权限。然后,如果您获得了权限,请请求 ACCESS_BACKGROUND_LOCATION 的权限。它将直接打开应用位置设置,但前提是您拥有 Target SDK 30

【讨论】:

  • 这只适用于第一次。不知道为什么google不说这个原因。
  • Google 可能希望用户知道如何从系统屏幕手动授予/阻止权限,并且在此过程中,它们让我们的开发人员生活更加困难。
  • 是的,我同意这是一个用户体验的玩笑......似乎谷歌不在乎。
  • @GilbertoIbarra 这种一次性后台权限行为是否存在跟踪问题?
  • @TWiStErRob 这是预期的行为,不是问题,只需按照谷歌建议显示权限,而不是自定义流程。
【解决方案2】:

从现在开始,在android中没有办法直接打开权限选择页面。 如果用户要求后台位置,Android 11 提供深度链接以直接打开权限选择页面。

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

【讨论】:

    猜你喜欢
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    相关资源
    最近更新 更多