flutter: geolocator不起作用,请确保在清单中至少定义了ACCESS_FINE_LOCATION或ACC



我正在尝试使用地理定位器,我添加了两个

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

到我的AndroidManifest主包下,我得到这个错误:E/flutter (21706): [error: flutter/lib/ui/ui_dart_state.cc(177)]未处理的异常:在manifest中没有定义位置权限。确保在清单中至少定义了ACCESS_FINE_LOCATION或ACCESS_COARSE_LOCATION。我的清单:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="leora3y.co.el_joker">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- io.flutter.app.FlutterApplication is an android.app.Application that
calls FlutterMain.startInitialization(this); in its onCreate method.
In most cases you can leave this as-is, but you if you want to provide
additional functionality it is fine to subclass or reimplement
FlutterApplication and put your custom class here. -->
<application
android:name="io.flutter.app.FlutterApplication"
android:label="el_joker"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:launchMode="singleTop"
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<!-- Displays an Android View that continues showing the launch screen
Drawable until Flutter paints its first frame, then this splash
screen fades out. A splash screen is useful to avoid any visual
gap between the end of Android's launch screen and the painting of
Flutter's first frame. -->
<meta-data
android:name="io.flutter.embedding.android.SplashScreenDrawable"
android:resource="@drawable/launch_background"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
</manifest>

谢谢。

您可以尝试以下步骤来解决问题。

1. Sync gradle from android studio (must required step) 
2. flutter clean
3. flutter pub get
4. flutter run

当你向AndroidManifest添加权限或其他内容时,请确保重新运行应用程序。

请务必请求权限

LocationPermission permission;
permission = await Geolocator.requestPermission();

首先编辑你的ANDROID MANIFEST文件并添加这些

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

然后请求用户的位置权限,因为如果不请求他的权限,您将无法获取它。

LocationPermission许可;

在您创建的async函数中添加上述两行代码最后在终端

中运行这些命令
  1. 颤振清洁
  2. 颤振运行

你现在可以走了。

最新更新