Permission plugin for Flutter. This plugin provides a cross-platform (iOS, Android) API to request and check permissions.

Overview

Flutter permission_handler plugin

The Flutter permission_handler plugin is build following the federated plugin architecture. A detailed explanation of the federated plugin concept can be found in the Flutter documentation. This means the permission_handler plugin is separated into the following packages:

  1. permission_handler: the app facing package. This is the package users depend on to use the plugin in their project. For details on how to use the permission_handler plugin you can refer to its README.md file. At this moment the Android and iOS platform implementations are also part of this package. Additional platform support will be added in their own individual "platform package(s)".
  2. permission_handler_platform_interface: this packages declares the interface which all platform packages must implement to support the app-facing package. Instructions on how to implement a platform packages can be found int the README.md of the permission_handler_platform_interface package.
Comments
  • Apple rejects all binaries built using this package, unless ALL permissions have purposes/reasons added in the .plist, even if the app is not using most of them...

    Apple rejects all binaries built using this package, unless ALL permissions have purposes/reasons added in the .plist, even if the app is not using most of them...

    Apple now rejects all apps, the error is as follows:

    Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

    Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSCalendarsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

    Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSAppleMusicUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

    Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSMotionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

    Missing Purpose String in Info.plist File - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSSpeechRecognitionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019, all apps submitted to the App Store that access user data will be required to include a purpose string.If you're using external libraries or SDKs, they may reference APIs that require a purpose string. While your app might not use these APIs, a purpose string is still required. You can contact the developer of the library or SDK and request they release a version of their code that doesn't contain the APIs. Learn more (https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy).

    opened by manuelgomes2 63
  • PlayStore detects `REQUEST_INSTALL_PACKAGES` even when app never uses it

    PlayStore detects `REQUEST_INSTALL_PACKAGES` even when app never uses it

    Hi, we recently got an inbox from Play Store stating that our app contains REQUEST_INSTALL_PACKAGES permission and that we have to declare this on Play Store. However, the problem is we never use it, no calls made to Permission.requestInstallPackages across our codebase.

    The question is, how do I remove unused permission requests from our app? If currently not possible, is there any suggestion?

    image

    platform: android 
    opened by iandis 59
  • iOS Build fails with multiple errors

    iOS Build fails with multiple errors

    🐛 Bug Report

    With today's update to 5.1.0+2, all of our iOS builds are failing.

    Xcode's output:
    ↳
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:40:81: error: use of undeclared identifier 'PHAccessLevelAddOnly'
                [PHPhotoLibrary requestAuthorizationForAccessLevel:(addOnlyAccessLevel)?PHAccessLevelAddOnly:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus authorizationStatus) {
                                                                                        ^
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:40:102: error: use of undeclared identifier 'PHAccessLevelReadWrite'
                [PHPhotoLibrary requestAuthorizationForAccessLevel:(addOnlyAccessLevel)?PHAccessLevelAddOnly:PHAccessLevelReadWrite handler:^(PHAuthorizationStatus authorizationStatus) {
                                                                                                             ^
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:53:89: error: use of undeclared identifier 'PHAccessLevelAddOnly'
                status = [PHPhotoLibrary authorizationStatusForAccessLevel:(addOnlyAccessLevel)?PHAccessLevelAddOnly:PHAccessLevelReadWrite];
                                                                                                ^
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:53:110: error: use of undeclared identifier 'PHAccessLevelReadWrite'
                status = [PHPhotoLibrary authorizationStatusForAccessLevel:(addOnlyAccessLevel)?PHAccessLevelAddOnly:PHAccessLevelReadWrite];
                                                                                                                     ^
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:71:14: error: use of undeclared identifier 'PHAuthorizationStatusLimited'; did you mean 'PHAuthorizationStatusDenied'?
                case PHAuthorizationStatusLimited:
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
                     PHAuthorizationStatusDenied
        In module 'Photos' imported from /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.h:11:
        /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS13.5.sdk/System/Library/Frameworks/Photos.framework/Headers/PHPhotoLibrary.h:22:5: note: 'PHAuthorizationStatusDenied' declared here
            PHAuthorizationStatusDenied,            // User has explicitly denied this application access to photos data.
            ^
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:71:14: error: duplicate case value 'PHAuthorizationStatusDenied'
                case PHAuthorizationStatusLimited:
                     ^
        /Users/vagrant/.pub-cache/hosted/pub.dartlang.org/permission_handler-5.1.0+2/ios/Classes/strategies/PhotoPermissionStrategy.m:67:14: note: previous case defined here
                case PHAuthorizationStatusDenied:
                     ^
        6 errors generated.
    

    Expected behavior

    App should build

    Reproduction steps

    Note that we are using Bitrise CI/CD for consistent builds. This error occurs in every build we attempt.

    Configuration

    This is a pretty large app, so lots of variables here, not sure what is needed - let me know.

    pubspec.yaml is looking for: permission_handler: ^5.0.0+hotfix.6

    Podfile includes:

    post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '9.0'
          config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
            '$(inherited)',
            ## dart: PermissionGroup.calendar
            'PERMISSION_EVENTS=0',
            ## dart: PermissionGroup.reminders
            'PERMISSION_REMINDERS=0',
            ## dart: PermissionGroup.contacts
            'PERMISSION_CONTACTS=0',
            ## dart: PermissionGroup.microphone
            'PERMISSION_MICROPHONE=0',
            ## dart: PermissionGroup.speech
            'PERMISSION_SPEECH_RECOGNIZER=0',
            ## dart: PermissionGroup.mediaLibrary
            'PERMISSION_MEDIA_LIBRARY=0',
            ## dart: PermissionGroup.sensors
            'PERMISSION_SENSORS=0'
          ]
        end
        flutter_additional_ios_build_settings(target)
      end
    end
    

    Version: permission_handler: 5.1.0+2 flutter: 1.22.4

    Platform:

    • [x] :iphone: iOS
    • [ ] :robot: Android
    opened by bryantgtx 41
  • Make API more intuitive

    Make API more intuitive

    First of all: Thanks for this great package! 😊 It's widely adopted for good reasons and I want to congratulate you on that.

    I understand how the API of this package got designed but Dart's introduction of extension methods makes it possible to design a much tighter, more readable API. Here are just some of my ideas:

    Enums: I think the PermissionStatus and ServiceStatus should be enums so that users can switch over the result. Values and other methods can still be defined using extension methods.

    PermissionHandler: I know this is what gives the package its name, but I'm not sure a PermissionHandler is needed at all. Currently, it mainly provides a namespace for all the functions of this package. But they could be defined just as well on the PermissionGroups themselves, which seems much more intuitive to me. status could be a getter, because it doesn't perform an action that the developer or user perceives. Developers still know that some work is involved, because it returns a Future. Also, most of the time you only want to request a single permission, so it makes sense to also provide a method for that.

    current | proposed --- | --- await PermissionHandler() .checkPermissionStatus(PermissionGroup.camera) | await PermissionGroup.camera.status (await PermissionHandler() .requestPermissions([PermissionGroup.camera]))[PermissionGroup.camera] | await PermissionGroup.camera.request() PermissionHandler() .requestPermissions([PermissionGroup.camera, PermissionGroup.storage])) | await [PermissionGroup.camera, PermissionGroup.storage].request()

    Intuitive getters: Sure, users can always check someStatus == PermissionStatus.granted, but someStatus.isGranted seems more intuitive, allowing for (await PermissionGroup.camera.status).isGranted. These getters could not only get implemented on PermissionStatus, but also on Future<PermissionStatus>, allowing even terser syntax: await PermissionGroup.camera.checkStatus().isGranted. To make the API more declarative, maybe these getters could also get directly implemented on PermissionGroups as syntactic sugar for implicitly calling the check() function: await PermissionGroup.camera.isGranted

    Support common patterns: Very often, permissions are checked and if they are denied, a request is made. That could be supported using some requestIfDenied method, that returns the status if the status is not PermissionStatus.denied and otherwise requests the permission from the user and then returns the new status: PermissionGroup.camera.requestIfDenied()

    PermissionGroups? I understand that some of the permissions resemble multiple OS-level permissions, but I think that's an implementation detail that most developers using this API don't really care about. Maybe, PermissionGroup could get renamed to Permission?

    Putting it all together Most of this was trivial syntactic sugar, but putting it all together, it makes for much more terse code. What before looked like this:

    var handler = PermissionHandler();
    var permission = await handler.checkPermissionStatus(PermissionGroup.storage);
    if (permission != PermissionStatus.granted) {
      var permissions = await handler.requestPermissions([PermissionGroup.storage]);
      if (permissions[PermissionGroup.storage] != PermissionStatus.granted) {
        // Do stuff.
      }
    }
    

    could now be as easy as this:

    if (await Permission.storage.requestIfDenied().isGranted) {
      // Do stuff.
    }
    

    Of course, these are breaking changes to the api and require a major version update to 5.0.0. I do think though that the simplicity of that API would be worth it. What do you think about these changes? If you decide on redesigning the API, I'm happy to help to implement the changes.

    platform: android platform: ios status: in progress type: enhancement 
    opened by MarcelGarus 30
  • requestPermission does not return result

    requestPermission does not return result

    🔙 Regression

    List permissions_group = [PermissionGroup.contacts, PermissionGroup.storage];

    Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions(permissions_group);

    print(permissions)

    Hi, I tried to run the code above. Unfortunately, I cannot get the result after granting the permission from the dialog. Any suggestion?

    opened by NeroJz 30
  • FileSystemException: Cannot open file....(OS Error: Permission denied, errno = 13)

    FileSystemException: Cannot open file....(OS Error: Permission denied, errno = 13)

    I cannot select image from gallery. This is my logcat FileSystemException: Cannot open file, path = '/storage/emulated/0/DCIM/s9camera/Pic_2020_06_04_19_36_15.jpg' (OS Error: Permission denied, errno = 13). I'm using permission_handler package for handle permission. Storage and Access Media Location permission has already granted by user but the issue is generated every time when pick image or video from external storage. Inside manifest file we have added android:requestLegacyExternalStorage="true" Suddenly i get issue on the production app , please support us

    opened by prasantco 29
  • Android app crashes after permission request popup

    Android app crashes after permission request popup

    🐛 Bug Report

    Android app crashes first time request permission when launching, on both deny and grant action . The app restarts, it works fine then.

    Map<PermissionGroup, PermissionStatus> permissions = await PermissionHandler().requestPermissions([PermissionGroup.location]);

    D/AndroidRuntime( 8448): Shutting down VM
    E/AndroidRuntime( 8448): FATAL EXCEPTION: main
    E/AndroidRuntime( 8448): Process: com.berkey.berkey, PID: 8448
    E/AndroidRuntime( 8448): java.lang.RuntimeException: Failure delivering result ResultInfo{[email protected]:requestPermissions:, request=25, result=-1, data=Intent { act=android.content.pm.action.REQUEST_PERMISSIONS (has extras) }} to activity {com.berkey.berkey/com.berkey.berkey.MainActivity}: java.lang.IllegalStateException: Reply already submitted
    E/AndroidRuntime( 8448): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:4268)
    E/AndroidRuntime( 8448): 	at android.app.ActivityThread.handleSendResult(ActivityThread.java:4312)
    E/AndroidRuntime( 8448): 	at android.app.ActivityThread.-wrap19(Unknown Source:0)
    E/AndroidRuntime( 8448): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1644)
    E/AndroidRuntime( 8448): 	at android.os.Handler.dispatchMessage(Handler.java:106)
    E/AndroidRuntime( 8448): 	at android.os.Looper.loop(Looper.java:164)
    E/AndroidRuntime( 8448): 	at android.app.ActivityThread.main(ActivityThread.java:6494)
    E/AndroidRuntime( 8448): 	at java.lang.reflect.Method.invoke(Native Method)
    E/AndroidRuntime( 8448): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
    E/AndroidRuntime( 8448): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
    E/AndroidRuntime( 8448): Caused by: java.lang.IllegalStateException: Reply already submitted
    E/AndroidRuntime( 8448): 	at io.flutter.view.FlutterNativeView$1.reply(FlutterNativeView.java:174)
    E/AndroidRuntime( 8448): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler$1.success(MethodChannel.java:203)
    E/AndroidRuntime( 8448): 	at com.baseflow.permissionhandler.PermissionHandlerPlugin.processResult(PermissionHandlerPlugin.kt:316)
    E/AndroidRuntime( 8448): 	at com.baseflow.permissionhandler.PermissionHandlerPlugin.handlePermissionsRequest(PermissionHandlerPlugin.kt:308)
    E/AndroidRuntime( 8448): 	at com.baseflow.permissionhandler.PermissionHandlerPlugin.access$handlePermissionsRequest(PermissionHandlerPlugin.kt:28)
    E/AndroidRuntime( 8448): 	at com.baseflow.permissionhandler.PermissionHandlerPlugin$Companion$registerWith$1.onRequestPermissionsResult(PermissionHandlerPlugin.kt:46)
    E/AndroidRuntime( 8448): 	at io.flutter.app.FlutterPluginRegistry.onRequestPermissionsResult(FlutterPluginRegistry.java:191)
    E/AndroidRuntime( 8448): 	at io.flutter.app.FlutterActivityDelegate.onRequestPermissionsResult(FlutterActivityDelegate.java:125)
    E/AndroidRuntime( 8448): 	at io.flutter.app.FlutterActivity.onRequestPermissionsResult(FlutterActivity.java:133)
    E/AndroidRuntime( 8448): 	at android.app.Activity.dispatchRequestPermissionsResult(Activity.java:7429)
    E/AndroidRuntime( 8448): 	at android.app.Activity.dispatchActivityResult(Activity.java:7280)
    E/AndroidRuntime( 8448): 	at android.app.ActivityThread.deliverResults(ActivityThread.java:4264)
    E/AndroidRuntime( 8448): 	... 9 more
    Lost connection to device.
    

    Version: 2.2.0

    Platform:

    • [ ] :iphone: iOS
    • [x ] :robot: Android
    opened by comeonbuddy 28
  • [BUG][iOS] Permission Popup not being displayed

    [BUG][iOS] Permission Popup not being displayed

    On iOS, on either a real or a simulated device, the iOS popup for accepting the permission is not being displayed. On Android everything is working right. On iOS, running the command await permission.request() returns PermissionStatus.undetermined without showing the popup.

    I've strictly followed the steps specified on pub.dev page, on my current project and on a new project created just for this. It use to work in a previous build I've made of the same code about 1 month ago (I don't remember which version of Flutter and PermissionHandler was using).

    My Flutter doctor output is:

    Flutter (Channel stable, 1.20.3, on Mac OS X 10.15.6 ...)
    Android toolchain - develop for Android devices (Android SDK version 30.0.0)
    Xcode - develop for iOS and macOS (Xcode 12.0)
    Android Studio (version 4.0)
    Connected device (1 available)
    
    No issues found!
    

    Anyone has any helpful info? I will gladly give any additional info :)!

    Thank you!

    opened by sajunt4 26
  • Android Camera permission: Permission.camera.status returns undetermined when it should be permanentlyDenied

    Android Camera permission: Permission.camera.status returns undetermined when it should be permanentlyDenied

    🐛 Bug Report

    Permission.camera.status returns undetermined if called immediately after the user permanentlyDenies the access. In older android versions, keeps returning undetermined for longer whiles than in android 10 when the user clicks on permanentlyDenied option.

    Reproduction steps

    1. Request user for permission
    2. Permanently deny the permission from the user's end
    3. Ask for permission status

    Actual behavior

    The permission status is returned as undetermined once. Requesting the permission status again returns it as permanentlyDenied.

    Expected behaviour

    The permission status should be returned as permanentlyDenied.

    Configuration

    Version: ^5.0.0+hotfix.3

    [✓] Flutter (Channel stable, v1.17.1, on Mac OS X 10.15.5 19F101, locale en-IN)
     
    [✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    [✓] Xcode - develop for iOS and macOS (Xcode 11.2.1)
    [✓] Android Studio (version 3.5)
    [✓] VS Code (version 1.46.1)
    [✓] Connected device (1 available)
    
    • No issues found!
    

    Platform:

    • [ ] :iphone: iOS
    • [x] :robot: Android
    platform: android type: bug 
    opened by viplavrawal 24
  • Always says

    Always says "No permissions found in manifest"

    💬 Questions and Help

    Hello,

    I copied and paste the example: https://github.com/BaseflowIT/flutter-permission-handler/tree/develop/example both main.dart and the permissions inside AndroidManifest.xml.

    The message is always the same:

    Launching lib/main.dart on SM G935F in debug mode...
    Initializing gradle...
    Resolving dependencies...
    Running Gradle task 'assembleDebug'...
    Built build/app/outputs/apk/debug/app-debug.apk.
    Installing build/app/outputs/apk/app.apk...
    Syncing files to device SM G935F...
    D/libGLESv2( 2235): STS_GLApi : DTS, ODTC are not allowed for Package : com.example.flutter_app
    D/permissions_handler( 2235): No permissions found in manifest for: $permission
    I/chatty  ( 2235): uid=10519(u0_a519) com.example.flutter_app identical 5 lines
    D/permissions_handler( 2235): No permissions found in manifest for: $permission
    D/permissions_handler( 2235): No permissions found in manifest for: $permission
    I/chatty  ( 2235): uid=10519(u0_a519) com.example.flutter_app identical 3 lines
    D/permissions_handler( 2235): No permissions found in manifest for: $permission
    D/[email protected][MainActivity]( 2235): ViewPostIme pointer 0
    D/[email protected][MainActivity]( 2235): ViewPostIme pointer 1
    D/permissions_handler( 2235): No permissions found in manifest for: $permission
    I/flutter ( 2235): decodePermissionRequestResult called with: value:[{0: 4}]
    I/flutter ( 2235): {PermissionGroup.calendar: PermissionStatus.unknown}
    I/flutter ( 2235): PermissionStatus.unknown
    

    No matter what I do. Even tried more simple code, like just asking for one permission clicking a button.

    I do have all the permissions on manifest.

    Any clues?

    opened by vendramini 23
  • Unable to detect current Android Activity., null, null

    Unable to detect current Android Activity., null, null

    [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: PlatformException(PermissionHandler.PermissionManager, Unable to detect current Android Activity., null, null)

    platform: android 
    opened by Ronadlo7 22
  • IOS app integration Flutter, permission.microphone status returns denied

    IOS app integration Flutter, permission.microphone status returns denied

    info.plist && Podfile config has been added~! flutter run alone , permission.microphone status return true. but IOS app run width flutter, permission.microphone status returns denied.

    opened by luciferyue 0
  • Requesting only camera permission, excluding microphone permission

    Requesting only camera permission, excluding microphone permission

    🚀 Feature Requests

    Requesting only camera permission, not microphone permission.

    Contextualize the feature

    I have an app where I scan barcodes using MLKit and the device camera. If I want to request the camera permission, Permission.camera requests the microphone as well, even though in my case I don't need it.

    Describe the feature

    Allow excluding the microphone permission when requesting camera permissions.

    Platforms affected (mark all that apply)

    • [x] :iphone: iOS (not sure if this could be fixed by not using the microphone macro)
    • [x] :robot: Android
    opened by navaronbracke 0
  • add-to-app always returning `disabled` on iOS

    add-to-app always returning `disabled` on iOS

    🐛 Bug Report

    When using add-to-app. The permissions status always returns disabled. I already added the GCC_PREPROCESSOR_DEFINITIONS configuration.

    Service Status

    2022-11-17 10:57:37.716985+0100 MyApp[38873:2355034] flutter: serviceStatus: ServiceStatus.disabled
    

    When checking the permission status it returns denied after requesting permission the settings are opened directly. And permanentlyDenied is returned after that. I never saw the native popup

    Expected behavior

    Return the correct status.

    Reproduction steps

    SETUP: https://docs.flutter.dev/development/add-to-app/ios/project-setup SCREEN: https://docs.flutter.dev/development/add-to-app/ios/add-flutter-screen?tab=vc-swift-tab#using-the-flutterappdelegate

    Configuration

    Version: 10.2.0

    Platform:

    • [X] :iphone: iOS
    • [ ] :robot: Android
    image

    Other platform channels are working perfectly.

    Linked issues: https://github.com/Baseflow/flutter-permission-handler/issues/682

    opened by vanlooverenkoen 0
  • Android 13 not working

    Android 13 not working

    🔙 Regression

    Try to get the Storage permission doing if (await Permission.storage.request().isGranted) ...

    The request() do nothing on Android 13, No dialog box shown. But works on Android 12 en previous

    Old (and correct) behavior

    Permission.storage.request() show permission request dialog It is working on Android 12 and below

    Current behavior

    Permission.storage.request() does nothing, nothing is happening.

    Reproduction steps

    Configuration

    Storage permission is not shown in the App Permissions page (Allowed or Not) and yet I have :

        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
        <!-- From Android 11    -->
        <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
    

    in Android Manifest. Version: 1.x

    Platform:

    • [ ] :iphone: iOS
    • [x] :robot: Android
    opened by laminr 4
  • IOS permission status returns denied but is granted

    IOS permission status returns denied but is granted

    Hi. we are getting permission.microphone as PermissionStatus.denied but it is granted also checked on device settings it is on

    
        • Flutter version 3.3.7 on channel stable at ******
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision e99c9c7cd9 (12 days ago), 2022-11-01 16:59:00 -0700
        • Engine revision 857bd6b74c
        • Dart version 2.18.4
        • DevTools version 2.15.0
    

    permission_handler: ^10.1.0 ios 16.1 device iphone xs max

    
    <key>NSMicrophoneUsageDescription</key>
    	<string>need to record audi messages</string>
    
    opened by fullflash 2
Owner
Baseflow
We provide software, skills and knowledge and with this we want to make a contribution to the world. We love to make innovation happen.
Baseflow
This repo contains a collection of permission related Flutter plugins which can be used to request permissions to access device resources in a cross-platform way.

Flutter Permission Plugins Deprecation Notice This repository has been replaced by the Flutter permission_handler plugin and will not longer be mainta

Baseflow 51 Dec 13, 2021
A sample app of using the image_picker + path_provider and permission_handler package to request permission and store photos on mobile

image_picker_example A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you sta

iang12 4 Apr 19, 2022
MedRec: Using Blockchain for Medical Data Access and Permission Management

MedRec Medical records need innovation. Patients leave data scattered across various jurisdictions as life events take them away from one provider’s d

Abhishek Kumar 4 Sep 14, 2022
A cross-platform WebView for Android, iOS and Web.

A feature-rich cross-platform webview using webview_flutter for mobile and iframe for web. JS interop-ready. Getting started Gallery Basic usage Featu

Mahad Asghar 2 Sep 29, 2022
Api Call Check flutter - A new Flutter project that demonstrates api calling and displays them in a scrollable list

api_fetch A new Flutter project that demonstrates api calling and displays them

Babish Shrestha 0 Jan 2, 2022
A package help you to make api call and handle error faster, also you can check for internet before call api.

http_solver ##not for production use, only for learning purpose. A package help you to make api call and handle error faster, also you can check for i

Abdelrahman Saed 1 Jun 18, 2020
Aditya 86 Nov 12, 2022
Youtube API in Dart app. Used for downloading media and search request.

Youtube API Youtube API made by using Dart and Flutter in a cross-platform app. Used for downloading media and search request. For an idea of how the

Avian Silviu-Gabriel 0 Nov 4, 2021
Morphing Coffee 0 Jan 27, 2022
Hava Durumu Uygulaması - Temel Api Request

Hava Ne Durumda Bu uygulama temelde apilerle nasıl çalışılır, apiden veri nasıl GET edilir gibi işlemleri anlamak için yapılmıştır. Uygulama Fotoğrafl

Mehmet Ege Aydın 4 Jun 14, 2022
Flutter-for-Wordpress-App - Cross platform wordpress news app built with Flutter and WP REST API

Flutter for Wordpress A flutter app for a wordpress websites with clean and elegant design. This app is available in free and pro version. You can cho

Madhav Poudel 240 Nov 15, 2022
A Flutter plugin to request the device unlock screen.

device_unlock A Flutter plugin to request the device unlock screen on Android and iOS. How does it work The following attempts and fallbacks are made:

Cíngulo 19 Sep 7, 2022
ESP-Touch Dart API for Flutter. Platform-specific implementation for Android (Java) and iOS (Objective-C).

esptouch_flutter Flutter plugin for ESP-Touch to configure network for ESP-8266 and ESP-32 devices. Runs on iOS and Android. esptouch_flutter is Flutt

SMAHO Engineering OSS 84 Nov 13, 2022
A Flutter plugin that provides assets abstraction management APIs without UI integration, you can get assets (image/video/audio) on Android, iOS and macOS.

photo_manager Photo/Assets management APIs for Flutter without UI integration, you can get assets (image/video/audio) from Android, iOS and macOS. 提供相

FlutterCandies 512 Nov 17, 2022
This project is Riot game information check service using Riot api.

riot_api_project this project is Riot game information check service using Riot api. Getting Started This project is a starting point for a Flutter ap

null 1 Dec 12, 2021
Cross-platform flutter plugin for reading and writing NFC tags. Not maintained anymore - not looking for new maintainer, fork instead.

nfc_in_flutter NFC in Flutter is a plugin for reading and writing NFC tags in Flutter. It works on both Android and iOS with a simple stream interface

Andi Semler 113 Sep 28, 2022
Simple and hackable request for dart

Simple and hackable request for dart

Thiago da Silva Teixeira 2 Sep 22, 2022
WooCommerce App template that uses Flutter. Integrated to work with WooCommerce stores, connect and create an IOS and Android app from Flutter for IOS and Android

WooCommerce App: Label StoreMax Label StoreMax - v5.3.1 Official WooSignal WooCommerce App About Label StoreMax Label StoreMax is an App Template for

WooSignal 307 Nov 22, 2022
Http request inspector for Flutter application

Alice Alice is an HTTP Inspector tool for Flutter which helps debugging http requests. It catches and stores http requests and responses, which can be

Hau Tran 7 Nov 7, 2022