私はGoogleの位置情報APIを使って地図上のユーザーの位置を表示しています。Marshmallow - Googleマップランタイムアクセス許可の問題
初めてアプリケーションを読み込むと、ユーザーが場所へのアクセスを有効にする必要がある理由を説明する根拠ダイアログが表示されます。次に、runtime permission dialog
が表示され、ユーザーが「を許可する」をクリックすると、ロケーションへのアクセスが有効になります。マップはクラッシュすることなく正常にロードされます。
ただし、アプリが再開すると(の背景に移動した場合はになります)、ユーザーが既に位置情報アクセスを許可しているため、理由のダイアログは表示されません。このシナリオでは、runtime permission dialog
のみが表示されます。ユーザーが "Deny"をクリックすると、アプリがクラッシュします。このコードは、この段階で実行時例外を処理する方法はありますM(ロリポップ、Jellybeanなどキットカット)
下記のAndroidのバージョンでは正常に動作しますか?
エラーは次のとおりです。
java.lang.SecurityException:クライアントはPRIORITY_HIGH_ACCURACYの場所を要求するACCESS_FINE_LOCATION 権限を持っている必要があります。
私は、任意のサードパーティのライブラリなしで標準サンプルMyLocationのデモアプリケーションを使用しています:
私もPermissionsDispatcherライブラリを使用してみましたが、同じエラーが持続します。
PermissionDispatcher Android-Google-Maps-Demo
private void enableMyLocation() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
// Permission to access the location is missing.
PermissionUtils.requestPermission(this, LOCATION_PERMISSION_REQUEST_CODE,
Manifest.permission.ACCESS_FINE_LOCATION, true);
} else if (mMap != null) {
// Access to the location has been granted to the app.
mMap.setMyLocationEnabled(true);
}
}
すべてのヘルプは高く評価されています。
ポスト:
ここが関連SOチケットです:
がどのように要求の結果にアクセスするには:あなたが権限を持っているかどうかを確認する方法
あなたが許可を要求するコード –
許可を受け入れる/拒否するという実装は、あなたがrのコードは正常に動作します。これらのケースで書いたコードに依存します。 onCreate()を投稿し、アクセス許可のコールバックメソッドをリクエストしてください。 –
私は[リンク](https://github.com/googlemaps/android-samples/blob/master/ApiDemos/app/src/main/java/com/example/mapdemo/MyLocationDemoActivity)に記載されている正確な例を使用しています。 java) – Akshata