web-dev-qa-db-ja.com

マシュマロFINEおよびCOARSEロケーション許可

ACCESS_FINE_LOCATIONにアクセスしようとしていますが、見つからない場合はACCESS_COARSE_LOCATIONにアクセスします。したがって、これら2つの許可を要求しますが、場所の許可を求める同じダイアログが表示されます。私はそれらが両方とも同じグループに属していることを知っていますが、Googleは言います:

注:ユーザーが同じグループの別のアクセス許可を既に付与している場合でも、アプリは必要なすべてのアクセス許可を明示的に要求する必要があります。また、パーミッションのグループへのグループ化は、将来的に変更される可能性がありますAndroidリリース。コードは、特定のパーミッションが同じグループ内にあるかどうかに依存するべきではありません。

つまり、1秒以内に2つのアクセス許可を要求すると、2つのダイアログが連続して表示されます。これは私にとってユーザーフレンドリーではないようです。もっと良い方法はありますか?

17
Robin Dijkhof

ACCESS_COARSE_LOCATION許可を定義する場合、ACCESS_FINE_LOCATION許可は必要ありません。

From Android Documentation:

ユーザー権限のリクエスト

NETWORK_PROVIDERまたはGPS_PROVIDERから位置情報の更新を受け取るには、AndroidマニフェストファイルでACCESS_COARSE_LOCATIONまたはACCESS_FINE_LOCATION許可をそれぞれ宣言してユーザー許可を要求する必要があります。例:

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

これらのアクセス許可がないと、場所の更新を要求するときにアプリケーションが実行時に失敗します。

注:NETWORK_PROVIDERGPS_PROVIDERの両方を使用している場合、ACCESS_FINE_LOCATION許可のみを要求する必要があります。 (ACCESS_COARSE_LOCATIONの許可には、NETWORK_PROVIDERの許可のみが含まれます。)

https://developer.Android.com/guide/topics/location/strategies.html をご覧ください

31
Rajesh