Flutter-geolocator: Android 10でアプリを使用している間のみ許可すると、GeolocationStatus.deniedが返されます

作成日 2019年10月03日  ·  37コメント  ·  ソース: Baseflow/flutter-geolocator

🐛バグレポート

アプリの使用中にのみ許可を選択すると、Android 10の新しいオプションGeolocator().checkGeolocationPermissionStatus()GeolocationStatus.denied返します
Screenshot_1570103723

バージョン: 5.1.4

プラットホーム:
:robot:Android

android in progress

最も参考になるコメント

バージョン5.1.4 + 1を使用してSDK28でコンパイルした場合も、同じ問題が発生します。SDK29でコンパイルすると、機能します。 Android10を実行しているPixel3aでこれを実行します。

compileSdkVersiontargetSdkVersionを29に設定すると、この問題が解決したことを確認できます。

全てのコメント37件

GeolocationStatus.deniedを返すコードについて詳しく教えてください。

サンプルアプリで再現できます。
android10エミュレーターで試してみてください。

エミュレーターはGeolocationStatus.deniedエラーを解決しますか?

私はあなたが何を意味するのか理解できません

コードと作成しようとしているものについて詳しく教えてください。 問題を再現しようとしていますが、さらに情報が必要です。

android10を搭載したandroidエミュレーターでデモアプリを試してください
untitled

この問題を再現し、デバイスの位置設定がオフになっているという結論に達しました。 この問題を修正するには、 [設定] > [場所] > [場所を使用] > [オン]に移動します。

場所がオンになっていることを確認したので、[許可]を選択ていると認識されます。

untitled

アプリの出力には、FusedLocationProviderを使用していることが示されます。 このクラスのバグ修正を含むGooglePlayサービスバージョン11.6.0以降を使用することをお勧めします。

https://imgur.com/a/egX6z6t

ご覧のとおり、私はグーグルプレイサービス19.2.75を使用しており、場所は

新しいAndroid10での完全に新しい権限です。異なるチェックが必要なため、許可または拒否を与えるべきではありません。

https://developer.android.com/reference/android/Manifest.permission.html#ACCESS_BACKGROUND_LOCATION

@humazed Geolocator()。checkGeolocationPermissionStatus()メソッドで何を達成しようとしていますか? 場所の設定を常に[許可]に設定しても、エラーは発生しません。

パーミッションチェックに使っていますが、デモアプリでも使って動作しません。
そして、問題は、アプリの使用中にのみ許可することを選択した場合にのみ発生します

10:09 StijnバンWoerkomの木、2019年10月10日には[email protected]
書きました:

@humazedhttps ://github.com/humazed何を達成しようとしてい
Geolocator()。checkGeolocationPermissionStatus()メソッド? 何も得られない
場所の設定を常に[許可]に設定するとエラーが発生します。


あなたが言及されたので、あなたはこれを受け取っています。
このメールに直接返信し、GitHubで表示してください
https://github.com/BaseflowIT/flutter-geolocator/issues/334?email_source=notifications&email_token=ACDNYJTFXDG2QBXZGR24XQTQN3PLPA5CNFSM4I5CDEP2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVX
または購読を解除する
https://github.com/notifications/unsubscribe-auth/ACDNYJS7PSSNNQPH3S7HBWTQN3PLPANCNFSM4I5CDEPQ

@humazed新しいAndroid10でGeolocator()。checkGeolocationPermissionStatus()メソッドを使用して

リポジトリのクローンを作成し、変更せずに実行しました

現在のエミュレータに問題がある場合に備えて、新しいエミュレータを作成しましたが、同じ動作が得られます

問題はエミュレーターの設定にもっと依存すると思います。 アプリは、GooglePlayサービスに問題があると述べています。 ネットワークを使用していますか、それともGoogle Playサービスをサポートしていない場所にいますか?

新しいエミュレーターで試しましたが、問題は同じです

アプリはandroid10より前のバージョンで正常に動作します

私が提供したgifには、Google Playサービスのバージョンが表示されており、場所が有効になっています

バージョン5.1.4 + 1を使用してSDK28でコンパイルした場合も、同じ問題が発生します。SDK29でコンパイルすると、機能します。 Android10を実行しているPixel3aでこれを実行します。

バージョン5.1.4 + 1を使用してSDK28でコンパイルした場合も、同じ問題が発生します。SDK29でコンパイルすると、機能します。 Android10を実行しているPixel3aでこれを実行します。

compileSdkVersiontargetSdkVersionを29に設定すると、この問題が解決したことを確認できます。

同じ問題があります。

iOSでもそうです。 getCurrentPosition()は、ロケーションを常に有効にするか、アプリの使用中にロケーションを有効にするか、ロケーションアクセスを拒否するダイアログボックスを表示します。 「アプリの使用中に有効にする」を選択すると、「PERMISISON_DENIED」というエラーで例外が発生します

geolocator5.1.3を使用しています

同様のエラーがPixel4でも再現されています。

同じ問題。
サムスンギャラクシーS10プラス、「使用中のアクセスを維持する」をクリックすると、PermissionStatus.deniedを取得します

現在、ロケーション権限プラグインの新しいバージョンに取り組んでいます。 この新しいバージョンには、使用中のアクセスが尊重され、PermissionStatus.deniedが返されなくなりました。

うーん-本番アプリでも同じ問題が発生していることに気づきました。 ユーザーが使用中のアクセス許可を与えると、このメソッドはPermissionStatus.grantedを返すと誤って想定していたので、これに頼ることはできなくなったようです。

編集:2時間後、スレッドの残りの部分を読んで、「compileSdkVersionとtargetSdkVersionを29に設定するとこの問題が解決したことを確認できます」という提案に気づきました。 動作します。

「compileSdkVersionとtargetSdkVersionを29に設定すると、この問題が解決したことを確認できます。」 これをAndroidManifest.xmlに追加するまで、問題を解決しました

<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>

@ JBBx2016私たちはandroid.permissions.ACCES_BACKGROUND_LOCATION権限に取り組んでいます。 権限が修正されると、エラーが解決する可能性があります。

すべてのアップデート?

すべてのアップデート?

すべてのアップデート

Android10デバイスでは動作しません。 :|

一時的な回避策として、私のフォークを使用できます
ブランチマスター
ここで、パーミッションのものを明らかに壊れたlocation_permissionsから別のプラグインpermission_handlerに移動しました

私のアプリは、Google PlayサービスPopUpの後で動作を停止します。「拒否」、「承認」などにGeolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);答えると、
そして最高の状態でそれはうまく機能します
Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.best);
エミュレーターを備えたAndroid10、最新の安定したブランチフラッター。

Geolocator locator = Geolocator();
    locator
        .checkGeolocationPermissionStatus(
            locationPermission: GeolocationPermission.locationWhenInUse)

paramsで権限を渡す必要があります。
GeolocationPermission.locationWhenInUse

バージョン6.0.0で修正

このページは役に立ちましたか?
0 / 5 - 0 評価