在清单中找不到以下权限:2 [flutter]

lok*_*ula 5 permissions flutter

我使用permission_handle 获取位置许可。

它总是说“在清单中找不到权限”,即使我试过了 "flutter clean"

import 'package:permission_handler/permission_handler.dart';


class PermissionsService {


  final PermissionHandler _permissionHandler = PermissionHandler();

   Future<bool> _requestPermission(PermissionGroup permission) async {
    var result = await _permissionHandler.requestPermissions([permission]);
    if (result[permission] == PermissionStatus.granted) {
      print('innnn');
      return true;
    }
    return false;
  }

  Future<bool> requestLocationPermission({Function onPermissionDenied} ) async {
    // return _requestPermission(PermissionGroup.locationWhenInUse);
    var granted = await _requestPermission(PermissionGroup.location );
    if(!granted){
      onPermissionDenied();
    }
    return granted;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的 Manifest.xml 文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.artistry">
    <!-- Flutter needs it to communicate with the running application
         to allow setting breakpoints, to provide hot reload, etc.
    -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>
</manifest>
Run Code Online (Sandbox Code Playgroud)

dan*_*dov 6

  1. 您需要在mainAndroidManifest.xml中设置权限。

共有三个文件夹debugmainprofile

在此输入图像描述

  1. 跑步flutter clean
  2. 看我的例子:

.../main/AndoridManifest.xml

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

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_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="Test app"
        android:icon="@mipmap/ic_launcher"
        android:roundIcon="@mipmap/ic_launcher_round">

        <activity
            android:name="test.packange.name.MainActivity"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:windowSoftInputMode="adjustResize">
            <!-- This keeps the window background of the activity showing
                 until Flutter renders its first frame. It can be removed if
                 there is no splash screen (such as the default splash screen
                 defined in @style/LaunchTheme). -->
            <meta-data
                android:name="io.flutter.app.android.SplashScreenUntilFirstFrame"
                android:value="true" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>
Run Code Online (Sandbox Code Playgroud)

主程序.dart

Future<void> requestPermission(PermissionGroup permission) async {
    final List<PermissionGroup> permissions = <PermissionGroup>[permission];
    final Map<PermissionGroup, PermissionStatus> permissionRequestResult =
    await PermissionHandler().requestPermissions(permissions);

    print(permissionRequestResult);
    _permissionStatus = permissionRequestResult[permission];
    if (_permissionStatus == PermissionStatus.granted) {
      initLocationStreamer();
    }
    print(_permissionStatus);
  }
Run Code Online (Sandbox Code Playgroud)
  1. 更新插件https://github.com/Baseflow/flutter-permission-handler。请参阅示例和问题。


Muh*_*qui 5

您在错误的清单文件中添加了权限,您必须在此目录android\app\src\main\AndroidManifest 的Android Manifest 中添加位置权限

在此处输入图片说明