web-dev-qa-db-ja.com

ACCESS_COARSE_LOCATION権限はいつ使用する必要がありますか?

ユーザーの位置情報を追跡し、地図上にルートを描画するAndroidアプリを構築しています。

here で説明されているように、Google Play ServicesロケーションAPIを使用しています。

アプリケーションがACCESS_FINE_LOCATIONパーミッションを必要とすることは直感的で、マニフェストに入れます:

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

ACCESS_COARSE_LOCATION権限も必要ですか?粗い場所が必要なユースケースは何ですか?

49
Terry

ACCESS_COARSE_LOCATION権限も必要ですか?

番号。

粗い場所が必要なユースケースは何ですか?

ACCESS_FINE_LOCATIONを要求しないが、位置データが必要であり、そのデータをあいまいにしたい場合(たとえば、ユーザーの位置から市区町村まで)。 LocationManagerの場合、NETWORK_PROVIDERのみを使用できます。 Play Services融合ロケーションプロバイダーの場合、彼らはこれを内部的に処理する必要があります。

昔々、ユーザーはインストール時に、アプリが大まかなロケーションアクセスを必要としているか、それとも細かいロケーションアクセスを必要としているかを知らされていました。ユーザーは、粗いアクセスを必要とするアプリを受け入れ、細かいアクセスを必要とするアプリを拒否する場合があります。

このUIが変更され、ユーザーがアプリで大まかなロケーション許可が必要かどうかを判断するのがかなり難しくなるため、ほとんどの開発者は単にファインロケーション許可を求めているのではないかと思います。そうは言っても、アプリがそのレベルの精度を必要としないことがわかっている場合(たとえば、天気予報のために場所が必要な場合)、大まかな場所の許可を求めることは、プライバシーと再び有益になるかもしれません。

63
CommonsWare

いいえ、大まかな場所を使用する必要はありません。

粗い場所はネットワークプロバイダーの場所であり、細かい場所はGPSプロバイダーとネットワークロケーションプロバイダーの両方です。そのため、両方の場所が適切に配置され、別の場所を使用する必要はありません。

NETWORK_PROVIDERまたはGPS_PROVIDERから位置情報の更新を受信するには、AndroidマニフェストファイルでそれぞれACCESS_COARSE_LOCATIONまたはACCESS_FINE_LOCATION許可のいずれかを宣言して、ユーザーの許可を要求する必要があります。これらの権限がないと、場所の更新を要求するときにアプリケーションが実行時に失敗します。

NETWORK_PROVIDERとGPS_PROVIDERの両方を使用している場合、両方のプロバイダーの許可が含まれているため、ACCESS_FINE_LOCATION許可のみを要求する必要があります。 ACCESS_COARSE_LOCATIONの許可により、NETWORK_PROVIDERへのアクセスのみが許可されます。

これ は参照用のリンクです。

17
Sagar Nayak

場所は2つの方法で決定できます。

Using NETWORK_PROVIDER
Using GPS_PROVIDER
  1. NETWORK_PROVIDERの使用

    このプロバイダーの使用に必要なAndroid権限は、ACCESS_COARSE_LOCATIONまたはACCESS_FINE_LOCATIONです。

  2. GPS_PROVIDERの使用

    このプロバイダーを使用するために必要なAndroid権限はACCESS_FINE_LOCATIONのみです

10
Pinak Gauswami