9

im using permission_handle to take permission for location.

and it always saying "No permissions found in manifest" even i tried "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;
  }
}

my Manifest.xml file

<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>
lokesh paladugula
  • 703
  • 3
  • 8
  • 9

2 Answers2

10

You added permission in the Wrong Manifest File, You have to add location permission inside Android Manifest of this Directory android\app\src\main\AndroidManifest

enter image description here

6
  1. You need to set permissions in main AndroidManifest.xml.

There are three folders debug, main and profile.

enter image description here

  1. Run flutter clean.
  2. See my example:

.../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);
  }
  1. Update plugin https://github.com/Baseflow/flutter-permission-handler. See example and issues.
dansamosudov
  • 102
  • 1
  • 1
  • 4