ACCESS_FINE_LOCATION
にアクセスしようとしていますが、見つからない場合はACCESS_COARSE_LOCATION
にアクセスします。したがって、これら2つの許可を要求しますが、場所の許可を求める同じダイアログが表示されます。私はそれらが両方とも同じグループに属していることを知っていますが、Googleは言います:
注:ユーザーが同じグループの別のアクセス許可を既に付与している場合でも、アプリは必要なすべてのアクセス許可を明示的に要求する必要があります。また、パーミッションのグループへのグループ化は、将来的に変更される可能性がありますAndroidリリース。コードは、特定のパーミッションが同じグループ内にあるかどうかに依存するべきではありません。
つまり、1秒以内に2つのアクセス許可を要求すると、2つのダイアログが連続して表示されます。これは私にとってユーザーフレンドリーではないようです。もっと良い方法はありますか?
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_PROVIDER
とGPS_PROVIDER
の両方を使用している場合、ACCESS_FINE_LOCATION
許可のみを要求する必要があります。 (ACCESS_COARSE_LOCATION
の許可には、NETWORK_PROVIDER
の許可のみが含まれます。)
https://developer.Android.com/guide/topics/location/strategies.html をご覧ください