web-dev-qa-db-fra.com

Comment résoudre ce problème "Impossible d'activer la couche MyLocation car les autorisations de localisation ne sont pas accordées"?

J'ai inclus dans ma page de flottement un simple composant GoogleMap uniquement pour voir si cela fonctionne, mais je ne peux pas résoudre ce problème. Je compile l'application et lorsque je navigue vers la page, j'obtiens l'erreur suivante dans la console:

"E/GoogleMapController (3376): Impossible d'activer la couche MyLocation car les autorisations de localisation ne sont pas accordées"

Je peux voir le composant mais je ne peux pas voir la carte (voir l'image):

googleMap example flutter

Configurations ajoutées:

//(AndroidManifest.xml)

<meta-data Android:name="com.google.Android.geo.API_KEY" Android:value="apikey"/>

//(pubspec.yaml)
google_maps_flutter: ^0.5.0

EDIT - SOLUTION

Ajoutez le package d'autorisation pour demander l'autorisation. Vous pouvez installer ce package pour gérer vos autorisations: https://pub.dartlang.org/packages/permission

6
juan

Si sur un émulateur, supprimez les éléments suivants dans votre fichier AndroidManifest:

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

et garde:

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

Cela a fonctionné pour moi. J'ai également fermé et reconstruit l'intégralité de l'application dans l'émulateur.

2
Jason

Il se peut que votre clé API ne soit pas configurée correctement et ait accès au service de localisation.

Vérifiez et activez ces services

enter image description here

2
Wasim

En date du décembre 2019 je n'ai pas réussi à utiliser le plugin permissions . Même après avoir ajouté les données manifestes nécessaires et mis à niveau le projet vers Android API 29 il est toujours revenu, PermissionStatus.notAgain.

Ce qui a fonctionné, c'est l'ajout du plugin permissions_handler avec les données manifestes qu'ils ont fournies (juste la partie emplacement). En outre, la mise à niveau de l'API Android vers la version 29 comme détaillé ici et la modification de compileSDKVersion et targetSdkVersion dans Android/app/build.gradle à 29.

Données du Mainfest, juste avant le <application> tag dans le répertoire Android/app/src/main/AndroidManifest.xml

<!-- Permissions options for the `location` group -->
<uses-permission Android:name="Android.permission.ACCESS_FINE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission Android:name="Android.permission.ACCESS_BACKGROUND_LOCATION" />

Redémarrez le IDE pour vous assurer que toutes ces modifications prennent effet. Ensuite, pour demander l'autorisation dans votre application:

import 'package:permission_handler/permission_handler.Dart';

void setPermissions() async{
   Map<PermissionGroup, PermissionStatus> permissions = 
   await PermissionHandler().requestPermissions([PermissionGroup.location]);
}
1
S.Ramjit