棉花糖FINE和COARSE位置许可

Rob*_*hof 17 android android-permissions android-6.0-marshmallow

我正在尝试访问ACCESS_FINE_LOCATION,如果找不到访问权限ACCESS_COARSE_LOCATION.所以我要求获得这2个权限,但是他们给了我相同的对话框,要求获得位置许可.我知道这些都属于同一组,但谷歌说:

注意:即使用户已在同一组中授予了其他权限,您的应用仍需要明确请求其所需的每个权限.此外,将权限分组到组中可能会在将来的Android版本中发生变化.您的代码不应该依赖于特定权限属于或不属于同一组的假设.

这意味着我要求在一秒内获得这2个权限,这会导致连续2个对话框.这对我来说似乎不太友好.有没有更好的办法?

Raj*_*esh 31

ACCESS_COARSE_LOCATION定义ACCESS_FINE_LOCATION权限时,您不需要权限.

来自Android文档:

请求用户权限

要从NETWORK_PROVIDER或 接收位置更新GPS_PROVIDER,您必须通过在Android清单文件中分别声明ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION权限来请求用户权限 .例如:

<manifest>
      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
       .......
</manifest>
Run Code Online (Sandbox Code Playgroud)

没有这些权限,您的应用程序将在请求位置更新时在运行时失败.

注:如果您使用的是两个NETWORK_PROVIDERGPS_PROVIDER,然后你只需要请求ACCESS_FINE_LOCATION许可,因为它包括两个供应商的许可.( ACCESS_COARSE_LOCATION仅限包含权限的权限NETWORK_PROVIDER.)

请查看https://developer.android.com/guide/topics/location/strategies.html