我在颤振页面中包含了一个简单的GoogleMap组件,只是为了查看它是否有效,但我无法解决此问题。我编译了应用程序,当我导航到该页面时,在控制台中出现以下错误:
“ E / GoogleMapController(3376):由于未授予位置权限,因此无法启用MyLocation图层”
我可以看到该组件,但看不到地图(请参见图片):
添加的配置:
//(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
谢谢。
答案 0 :(得分:2)
android.permission.ACCESS_FINE_LOCATION
被视为危险许可。您是否使用过permission
软件包来请求许可? https://pub.dartlang.org/packages/permission
答案 1 :(得分:2)
答案 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
中的targetSdkVersion
和android/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)
我设法解决了这个问题: