Flutter-geolocator: Android-初めて実行されたCheckGeolocationPermissionStatusが拒否されました

作成日 2020年07月09日  ·  3コメント  ·  ソース: Baseflow/flutter-geolocator

AndroidプラットフォームでGeolocator()を実行すると。 CheckGeolocationPermissionStatus()関数が初めてGeolocationStatusが拒否され、ユーザーに許可を求めていません。 しかし、IOSでは、同じ関数を初めて呼び出すとき、GeolocationStatusが不明であるため、Geolocator()を呼び出す必要が

checkGeolocationPermissionStatusを初めて呼び出すときに、Androidでユーザーに許可を求める方法はありますか?

私のコードの下:

Future<void> getLocation() async {
    try {

      var serviceEnabled = await  Geolocator().isLocationServiceEnabled();

      if (serviceEnabled) {
        var geolocationStatus =
            await Geolocator().checkGeolocationPermissionStatus();

        if (geolocationStatus == GeolocationStatus.granted || geolocationStatus == GeolocationStatus.unknown) {
          position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
          return;
        } 
      }
    } catch (e) {
      print(e);
    }
  }

全てのコメント3件

このプラグインマネージャーは、コミュニティの維持やサポートにあまり関心がないようです。多くの問題が発生しましたが、正確な解決策やバグ修正の解決策はありませんでした。

ええ、あなたは正しいです! 私は他の問題も答えがないのを見ました。 = /

@ azeemgujjar@ CNogueira92 、これは

あなたの質問@ CNogueira92に答えるために、AndroidとiOSはパーミッションの処理が少し異なります。 デフォルトでは、Androidは権限を「拒否」として扱います(ユーザーが明示的に拒否していない場合でも)。 iOSには、権限がまだ要求されていない状況に対して特定のステータスがあります(「未決定」と呼ばれ、「不明」と解釈されます)。

どちらのプラットフォームでも、 checkGeolocationPermissionStatusdeniedまたはunknown返すときに、アクセス許可を要求するのは問題ありcheckGeolocationPermissionStatus 。 ユーザーが[拒否して再度質問しない]オプションを選択した場合、Geolocatorはこれに気づき、権限を要求しません。

実際には、Geolocatorが内部で行うため、手動で権限を確認する必要はありません。 したがって、コードを次のように安全に更新できます。

Future<void> getLocation() async {
    try {

      var serviceEnabled = await  Geolocator().isLocationServiceEnabled();

      if (serviceEnabled) {
        position = await Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
      } else {
        // TODO: ask the user to enable the location services...   
      }
    } catch (e) {
      print(e);
    }
  }

checkGeolocationPermissionStatusは、権限を手動で確認し、ユーザーに何らかのアクションを実行するように通知する場合にのみ便利な方法です。 私が言及した新しいリリースでは、手動で権限を要求することもできます。 今すぐそれを行いたい場合は、ジオロケーターに付属しているlocation_permissionsプラグインを呼び出す必要があります。 location_permissionsプラグインの詳細については、こちらをご覧ください

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