如何解决此“由于未授予位置权限而无法启用MyLocation图层”?

时间:2019-04-03 17:29:06

标签: android dart flutter

我在颤振页面中包含了一个简单的GoogleMap组件,只是为了查看它是否有效,但我无法解决此问题。我编译了应用程序,当我导航到该页面时,在控制台中出现以下错误:

  

“ E / GoogleMapController(3376):由于未授予位置权限,因此无法启用MyLocation图层”

我可以看到该组件,但看不到地图(请参见图片):

googleMap example flutter

添加的配置:

//(AndroidManifest.xml)

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

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

//(pubspec.yaml)
google_maps_flutter: ^0.5.0

谢谢。

5 个答案:

答案 0 :(得分:2)

android.permission.ACCESS_FINE_LOCATION被视为危险许可。您是否使用过permission软件包来请求许可? https://pub.dartlang.org/packages/permission

答案 1 :(得分:2)

可能是您的API密钥未正确设置并被授予位置服务访问权限。

检查并启用这些服务

enter image description here

答案 2 :(得分:2)

如果在模拟器上,请在您的 AndroidManifest 文件中删除以下内容:

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

并保留:

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

这对我有用。我还关闭并在模拟器中重建了整个应用程序。

答案 3 :(得分:0)

截至 2019年12月,我未能成功使用permissions插件。即使添加了必要的清单数据并将项目升级到Android API 29,它仍然返回PermissionStatus.notAgain

所做的工作是在permissions_handler插件中添加了他们提供的manifest data(只是位置部分)。另外,将Android API升级为详细的here到29,并将compileSDKVersion中的targetSdkVersionandroid/app/build.gradle更改为29

主要数据,位于目录<application>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" />

重新启动IDE,以确保所有这些更改都生效。然后在您的应用中请求权限:

import 'package:permission_handler/permission_handler.dart';

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

答案 4 :(得分:0)

我设法解决了这个问题:

  1. 在 Google 控制台上启用 Map SDK。
  2. 停止项目运行并运行flutter clean命令。
  3. 从设备上卸载应用程序并再次运行。