问题复现:
当把targetSdkVersion
提高到29,发现请求了ACCESS_FINE_LOCATION
和ACCESS_COARSE_LOCATION
依然会定位失败
问题原因:
Android Q 新增了后台定位权限:ACCESS_BACKGROUND_LOCATION
,这个权限始终允许请求设备位置,而老的ACCESS_FINE_LOCATION
和ACCESS_COARSE_LOCATION
代表仅前台允许.
解决方案:
当targetSdkVersion
小于29时,只要申请老两样,就会默认请求新权限.
当targetSdkVersion
大于等于29时,如果应用要一直定位,只要申请ACCESS_BACKGROUND_LOCATION
就可以了,如果应用只想申请前台定位,那么就只申请ACCESS_FINE_LOCATION
和ACCESS_COARSE_LOCATION
权限即可
网友评论