Android 棉花糖精粗定位许可证

Android 棉花糖精粗定位许可证,android,android-permissions,android-6.0-marshmallow,Android,Android Permissions,Android 6.0 Marshmallow,我正在尝试访问access\u FINE\u LOCATION,如果找不到,则访问access\u rough\u LOCATION。所以我请求这两个权限,但是他们给了我同样的对话框请求位置权限。我知道他们都在同一组,但谷歌表示: 注意:即使用户已经在同一组中授予了另一个权限,您的应用仍然需要显式请求它所需的每个权限。此外,在未来的Android版本中,权限分组可能会发生变化。您的代码不应依赖于特定权限是否在同一组中的假设 这意味着我在一秒钟内请求这两个权限,这将导致一行中出现两个对话框。这对我

我正在尝试访问
access\u FINE\u LOCATION
,如果找不到,则访问
access\u rough\u LOCATION
。所以我请求这两个权限,但是他们给了我同样的对话框请求位置权限。我知道他们都在同一组,但谷歌表示:

注意:即使用户已经在同一组中授予了另一个权限,您的应用仍然需要显式请求它所需的每个权限。此外,在未来的Android版本中,权限分组可能会发生变化。您的代码不应依赖于特定权限是否在同一组中的假设


这意味着我在一秒钟内请求这两个权限,这将导致一行中出现两个对话框。这对我来说似乎不是很友好。有更好的方法吗?

当您定义
访问\u粗略\u位置
权限时,您不需要
访问\u粗略\u位置
权限

来自Android文档:

请求用户权限

为了从
网络供应商处接收位置更新
GPS\U提供程序
,您必须通过声明
访问粗略位置
访问精细位置
权限, 分别在您的Android清单文件中。例如:

<manifest>
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
       .......
</manifest>

.......
如果没有这些权限,您的应用程序将在以下情况下在运行时失败: 请求位置更新

注意:如果您同时使用
网络\u提供商
GPS\u提供商
,则 您只需要请求
ACCESS\u FINE\u LOCATION
权限,因为 它包括两个提供者的权限。(许可
访问\u位置
仅包括对
网络\u提供商的权限


请看

我已解决了相同的问题。请尝试为其授予运行时权限,并首先检查清单SDK版本,如果您的版本大于6.0或等于6.0,则需要检查您的权限,并仅在请求位置传递权限精细位置,然后它肯定会工作

如果你被代码卡住了,那么你可以要求代码,我会更新你,但首先要完成这些步骤。
如果你成功地完成了任务,那么就给它打分。

我现在也在问自己同样的问题。
ACCESS\u FINE\u LOCATION
本身不包含
ACCESS\u rough\u LOCATION
?例如,如果你能有一个好的位置,你应该能够得到大概的位置可能?你是使用网络提供商获取位置还是只使用GPS?试试这个可能是可行的