我什么时候应该使用 ACCESS_COARSE_LOCATION 权限?
When should I use ACCESS_COARSE_LOCATION permission?
我正在构建一个 Android 应用程序,它将跟踪用户的地理位置并在地图上绘制他们的路线。
我正在使用 Google 播放服务位置 API,如 here 所述。
很直观,我的应用程序需要 ACCESS_FINE_LOCATION
权限,我把它放在清单中:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
我还需要 ACCESS_COARSE_LOCATION
权限吗?
我需要粗略位置的用例是什么?
Do I also need the ACCESS_COARSE_LOCATION permission?
没有
What's the use case where I need the coarse location?
如果您不要求 ACCESS_FINE_LOCATION
,但您需要位置数据,并且您愿意让该数据模糊(例如,距离用户位置最多一个城市街区)。在LocationManager
的情况下,只能使用NETWORK_PROVIDER
;对于 Play Services 融合位置提供者,他们应该在内部处理这个问题。
曾几何时,很久很久以前,用户在安装时会被告知应用程序需要粗略还是精细的位置访问权限。用户可能会接受需要粗略访问权限的应用程序,但拒绝需要精细访问权限的应用程序。
由于此 UI 已更改,用户很难确定应用程序需要粗略位置权限还是精细位置权限,我怀疑大多数开发人员只要求精细位置权限。话虽这么说,如果您知道您的应用程序不需要那种级别的准确性(例如,您想要天气预报的位置),请求粗略的位置许可是隐私方向的一个很好的“提示”,并且将来可能会再次证明是有益的。
更新 2021-11-16:Android 12 更改 UI 如果您要求 ACCESS_FINE_LOCATION
。 The user now has the option of downgrading you to only getting ACCESS_COARSE_LOCATION
access,选择“近似”而不是“精确”。
不,您不需要使用粗略定位。
粗略定位是针对网络提供商的位置,精细定位是针对 GPS 提供商和网络定位提供商。这么好的位置涵盖了两者,你不需要使用另一个。
In order to receive location updates from NETWORK_PROVIDER or
GPS_PROVIDER, you must request the user's permission by declaring
either the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission,
respectively, in your Android manifest file. Without these
permissions, your application will fail at runtime when requesting
location updates.
If you are using both NETWORK_PROVIDER and GPS_PROVIDER, then you need
to request only the ACCESS_FINE_LOCATION permission, because it
includes permission for both providers. Permission for
ACCESS_COARSE_LOCATION allows access only to NETWORK_PROVIDER.
This是一个link供大家参考。
可以通过两种方式确定位置:
Using NETWORK_PROVIDER
Using GPS_PROVIDER
使用NETWORK_PROVIDER
Android 使用此提供程序所需的权限是
ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION.
使用GPS_PROVIDER
Android 使用此提供程序所需的权限仅
ACCESS_FINE_LOCATION
简而言之,ACCESS_FINE_LOCATION
为您提供更好、更准确的位置,ACCESS_COARSE_LOCATION
为您提供不太准确的位置。
ACCESS_FINE_LOCATION 包括 ACCESS_COARSE_LOCATION。但是,有一个问题:
ACCESS_COARSE_LOCATION 为您提供电池友好的最后已知位置 https://developer.android.com/training/location/retrieve-current.html#setup
这依赖于 Google 播放服务
但是,如果您需要实时/实时位置之类的东西,请使用 ACCESS_FINE_LOCATION
它为您提供实时/实时位置。不过,您需要使用 LocationListener。
我正在构建一个 Android 应用程序,它将跟踪用户的地理位置并在地图上绘制他们的路线。
我正在使用 Google 播放服务位置 API,如 here 所述。
很直观,我的应用程序需要 ACCESS_FINE_LOCATION
权限,我把它放在清单中:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
我还需要 ACCESS_COARSE_LOCATION
权限吗?
我需要粗略位置的用例是什么?
Do I also need the ACCESS_COARSE_LOCATION permission?
没有
What's the use case where I need the coarse location?
如果您不要求 ACCESS_FINE_LOCATION
,但您需要位置数据,并且您愿意让该数据模糊(例如,距离用户位置最多一个城市街区)。在LocationManager
的情况下,只能使用NETWORK_PROVIDER
;对于 Play Services 融合位置提供者,他们应该在内部处理这个问题。
曾几何时,很久很久以前,用户在安装时会被告知应用程序需要粗略还是精细的位置访问权限。用户可能会接受需要粗略访问权限的应用程序,但拒绝需要精细访问权限的应用程序。
由于此 UI 已更改,用户很难确定应用程序需要粗略位置权限还是精细位置权限,我怀疑大多数开发人员只要求精细位置权限。话虽这么说,如果您知道您的应用程序不需要那种级别的准确性(例如,您想要天气预报的位置),请求粗略的位置许可是隐私方向的一个很好的“提示”,并且将来可能会再次证明是有益的。
更新 2021-11-16:Android 12 更改 UI 如果您要求 ACCESS_FINE_LOCATION
。 The user now has the option of downgrading you to only getting ACCESS_COARSE_LOCATION
access,选择“近似”而不是“精确”。
不,您不需要使用粗略定位。
粗略定位是针对网络提供商的位置,精细定位是针对 GPS 提供商和网络定位提供商。这么好的位置涵盖了两者,你不需要使用另一个。
In order to receive location updates from NETWORK_PROVIDER or GPS_PROVIDER, you must request the user's permission by declaring either the ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission, respectively, in your Android manifest file. Without these permissions, your application will fail at runtime when requesting location updates.
If you are using both NETWORK_PROVIDER and GPS_PROVIDER, then you need to request only the ACCESS_FINE_LOCATION permission, because it includes permission for both providers. Permission for ACCESS_COARSE_LOCATION allows access only to NETWORK_PROVIDER.
This是一个link供大家参考。
可以通过两种方式确定位置:
Using NETWORK_PROVIDER
Using GPS_PROVIDER
使用NETWORK_PROVIDER
Android 使用此提供程序所需的权限是 ACCESS_COARSE_LOCATION 或 ACCESS_FINE_LOCATION.
使用GPS_PROVIDER
Android 使用此提供程序所需的权限仅 ACCESS_FINE_LOCATION
简而言之,ACCESS_FINE_LOCATION
为您提供更好、更准确的位置,ACCESS_COARSE_LOCATION
为您提供不太准确的位置。
ACCESS_FINE_LOCATION 包括 ACCESS_COARSE_LOCATION。但是,有一个问题:
ACCESS_COARSE_LOCATION 为您提供电池友好的最后已知位置 https://developer.android.com/training/location/retrieve-current.html#setup 这依赖于 Google 播放服务
但是,如果您需要实时/实时位置之类的东西,请使用 ACCESS_FINE_LOCATION 它为您提供实时/实时位置。不过,您需要使用 LocationListener。