在清单 [Android] 中找不到权限

Pur*_*tto 1 xml android flutter

我一直在尝试各种方法来调用我的位置数据,从 IP 位置 API 到 Flutter 插件,但都无法获得其中任何一个的准确位置数据。通过所有我已经解决了Geolocator。但我一直得到

I/flutter ( 5206): null
I/flutter ( 5206): GeolocationStatus.unknown
Run Code Online (Sandbox Code Playgroud)

在我的 Init 状态下调用它时,如下所示:

  void initState() {
    super.initState();
    fetchData();
  }


  fetchData() async {
    setState(() {
      isLoading = true; //Data is loading
    });
    GeolocationStatus geolocationStatus =
        await Geolocator().checkGeolocationPermissionStatus();
    position = await Geolocator()
        .getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
    if (position != null) {
      lastPosition = await Geolocator()
          .getLastKnownPosition(desiredAccuracy: LocationAccuracy.high);
    }

    ...

    if (position != null)
      print(position);
    else
      print(lastPosition);

    print(geolocationStatus);

    setState(() {
      isLoading = false; //Data has loaded
    });
  }
Run Code Online (Sandbox Code Playgroud)

经过一番研究,我决定使用permission_handler来尝试检查权限。我声明PermissionStatus _status在我的 fetchData() 函数中添加了以下几行:

PermissionHandler()
        .checkPermissionStatus(PermissionGroup.location);
Run Code Online (Sandbox Code Playgroud)

而我得到No permissions found in manifest for: 3 我的清单具有的权限,以最好的我的理解。清单文件:https : //gist.github.com/Purukitto/640d1637c05bdb1b69cc4309947c45d5

据我了解,向清单添加权限应该至少向应用程序添加权限选项,但是在构建和安装应用程序后,我的应用程序存在“无权限”(附截图)。

可能是什么问题呢。我试图提及所有相关的事情。任何见解都会非常有帮助。

截屏

J. *_*Saw 5

这个问题在 Flutter 包permission_handler的自述文件中链接,作为设置AndroidManifest.xml询问权限的示例。

如果您在设备要求用户授予权限时遇到问题,这可能是您的罪魁祸首。

详细说明 rollcake 的答案:
1. 如果您还不知道需要什么权限,请转到Android 开发人员页面查看列表和语法。
2. 在您的项目中,打开:android/app/src/main/AndroidManifest.xml
3. 插入您的权限,如下例所示:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.your.package">

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

    <application
        android:name="io.flutter.app.FlutterApplication"
        ...<and so on>...
Run Code Online (Sandbox Code Playgroud)

旁注:AndroidManifest.xml您的项目中有不同的文件(...src/debug、...src/profile 和...src/main)。将权限添加到上述main版本应该可以工作,但如果您注意到不一致的行为,请确保将所有权限放在同一个 AndroidManifest 文件中。