в манифесте не найдено разрешений для: 2 [флаттер] - PullRequest
1 голос
/ 04 мая 2020

я использую allow_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;
  }
}

мой манифест. 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>

Ответы [ 2 ]

0 голосов
/ 04 мая 2020
  1. Вам необходимо установить разрешения в main AndroidManifest. xml.

Существует три папки debug, main и profile.

enter image description here

Выполнить flutter clean. См. Мой пример:

... / 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>

main.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);
  }
Обновление плагина https://github.com/Baseflow/flutter-permission-handler. Смотрите пример и проблемы.
0 голосов
/ 04 мая 2020

Вы добавили разрешение в неверный файл манифеста. Вы должны добавить разрешение местоположения внутри Android Манифест этого каталога android \ app \ src \ main \ AndroidManifest

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...