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):
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
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.
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]);
}