<manifest ... >
<!-- 当应用请求 ACCESS_COARSE_LOCATION 权限或 ACCESS_FINE_LOCATION 权限时,就是在声明需要获取前台位置信息 -->
<!-- 这个权限用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 在 Android 10(API 级别 29)及更高版本中,您必须在应用的清单中声明 ACCESS_BACKGROUND_LOCATION 权限,才可以在后台访问位置信息。在较低版本的 Android 系统中,当应用获得前台位置信息访问权限时,也会自动获得后台位置信息访问权限。-->
<!-- 这个权限用于后台位置权限 -->
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
</manifest>
我们在申请位置信息权限时,要先确定自己需要的是前台位置信息还是后台位置信息,是确切位置信息还是大致位置信息。
前台位置信息
1、当应用只需要在前台和用户交互时获取位置信息。
2、当应用的某项功能仅分享或接收一次位置信息,或者只在特定的一段时间内分享或接收位置信息。
那就只需要申请前台位置信息所需的ACCESS_COARSE_LOCATION 权限或 ACCESS_FINE_LOCATION 权限。
另外当应用被置于后台时,该应用的某个前台服务正在运行,其位置信息访问权限会得到保留。也就是说这种情况不需要申请后台位置信息所需权限,如下图所示
大致位置信息&确切位置信息
如果需要大致位置信息,则需要申请ACCESS_COARSE_LOCATION 权限
如果需要确切位置信息,则需要一起申请ACCESS_COARSE_LOCATION 权限和ACCESS_FINE_LOCATION 权限,原因如下
后台位置信息
1、当应用需要不在前台和用户交互时获取位置信息。
2、当应用中的某项功能会不断与其他用户分享位置信息或使用Geofencing API(不是很了解这一块,请自行百度)
那就需要后台位置信息访问权限 ACCESS_BACKGROUND_LOCATION
1、在 Android 10(API 级别 29)及更高版本中,您必须在应用的清单中声明ACCESS_BACKGROUND_LOCATION权限以便获取后台位置信息,但是在较低版本的 Android 系统中,当应用获得前台位置信息访问权限时,也会自动获得后台位置信息访问权限。
2、在申请该权限时,需要先申请ACCESS_COARSE_LOCATION 权限 或者 ACCESS_FINE_LOCATION 权限后,才可以ACCESS_BACKGROUND_LOCATION权限
大致位置信息&确切位置信息
这部分内容和前面的前台位置信息里的描述的一样,不再重复。
以上属于个人观点,如果有误欢迎留言交流