permission_handler 11.3.1 copy "permission_handler: ^11.3.1" to clipboard
permission_handler: ^11.3.1 copied to clipboard

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

11.3.1 #

  • Documents the use of the PERMISSION_LOCAITON_WHENINUSE macro on iOS.

11.3.0 #

  • Adds a new permission Permission.backgroundRefresh to check the background refresh permission status via:
    • Updates permission_handler_apple dependency to version 9.1.5.
    • Updates permission_handler_platform_interface dependency to version 3.11.6.

11.2.1 #

  • Adds PermissionGroup.photosAddOnly to the README.

11.2.0 #

  • Adds the Permission.assistant which allows users to request permissions to access SiriKit on iOS and macOS platforms. This is a no-op on all other platforms.

11.1.0 #

  • Adds support for iOS 17+ Calendar access levels.
  • Deprecates Permission.calendar. Use Permission.calendarWriteOnly to request a write-only access to the calendar. For full access to calendar use Permission.calendarFullAccess.
  • For Permission.calendarFullAccess on iOS 17+ use PERMISSION_EVENTS_FULL_ACCESS in Podfile instead of PERMISSION_EVENTS.
  • Adds web support by endorsing permission_handler_html as the web implementation of the permission handler. Only some permissions are supported at this time.
  • Updates permission_handler_android dependency to version 12.0.1.
  • Updates permission_handler_apple dependency to version 9.2.0.
  • Updates permission_handler_windows dependency to version 0.2.0.
  • Updates permission_handler_platform_interface dependency to version 4.0.2.

11.0.1 #

  • Adds extension methods to the PermissionStatus enum allowing developers to register callback methods, which will improve code readability.

11.0.0 #

  • BREAKING CHANGE: Updates permission_handler_android dependency to version 11.0.0.
  • Updates permission_handler_apple dependency to version 9.1.4.
  • Updates permission_handler_platform_interface dependency to version 3.11.5.

10.4.5 #

  • Updates the mentions of Android versions in the README, now following a format of 'Android {name} (API {number})'. For example: 'Android 13 (API 33)'.

10.4.4 #

  • Adds a section to the FAQ clarifying how to request background location permission on Android 10+ (API 29+).

10.4.3 #

  • Updates example app to show relevant permissions on Android and iOS platforms.
  • Updates the documentation for the Permission.bluetooth permission regarding the limitations of the permission on iOS.

10.4.2 #

  • Adds a FAQ section to the file.

10.4.1 #

  • Updates AndroidManifest documentation in the example application with regards to the use of READ_EXTERNAL_STORAGE, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO permissions.

10.4.0 #

  • Adds support for the new Android 13 permission: BODY_SENSORS_BACKGROUND.

10.3.0 #

  • Adds support for the "Provisional" permission status introduced with iOS 12+.

10.2.1 #

  • Fix missing POST_NOTIFICATIONS permission in the Android example project.

10.2.0 #

  • Added support for the new Android 13 permissions: SCHEDULE_EXACT_ALARM, READ_MEDIA_IMAGES, READ_MEDIA_VIDEO and READ_MEDIA_AUDIO

10.1.0 #

  • Added support for the new Android 13 permission: NEARBY_WIFI_DEVICES.

10.0.2 #

  • Adds a link to the issue tracker which shows up as "View/report issues" on

10.0.1 #

  • Fix the PermissionHandlerEnums link in the

10.0.0 #

  • BREAKING CHANGE: Updated Android compileSdkVersion to 33 to handle the new POST_NOTIFICATIONS permission.

    When updating to version 10.0.0 make sure to update the android/app/build.gradle file and set the compileSdkVersion to 33.

9.2.0 #

  • Federated permission_handler_windows for the Windows version.

9.1.0 #

  • Moved out Android and iOS implementations into their own packages.

9.0.2 #

  • Fixes regression when requesting 'locationAlways' permission on Android 9 (Pie) and earlier.

9.0.1 #

  • Fixes bug when requesting locationAlways permissions on Android.
  • Solves a compilation error when building the example App on Android.

9.0.0 #

  • iOS: Bluetooth permission dialog now appears when requested instead of when the app is initialized. Note: Requesting Bluetooth status will also prompt the permission dialog (see issue #591).

8.3.0 #

  • Updated Android Gradle Plugin to 4.1.0 and Gradle Wrapper to 6.7 which is in line with the current Flutter stable version (Flutter 2.5.3).

8.2.6 #

  • Fixed broken Androidx migration link in the

8.2.5 #

  • Fixed broken link in the

8.2.4 #

  • Solved bug where output would log that there is no permission in the manifest for BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, and BLUETOOTH_CONNECT on Android 11 devices and lower(see issue #691).

8.2.3 #

  • iOS: Enhanced the bluetooth permission for iOS 13 and up, so the user gets prompted with the "Bluetooth" permission dialog (see issue #591).

8.2.2 #

  • Updated the to mention setting the compileSdkVersion to 31;
  • Added an additional note to version 8.2.0 release notes to inform people to update the compileSdkVersion.

8.2.1 #

  • Resolved an issue where checking permissions on pre-Android M devices always resolved to PermissionStatus.denied (see issue #60);
  • Updated the url_launcher dependency in the example App to ^6.0.12.

8.2.0 #

IMPORTANT: When updating to version 8.2.0 make sure to also set the compileSdkVersion in the app/build.gradle file to 31.

  • Added support for the new Android 12 Bluetooth permissions: BLUETOOTH_SCAN, BLUETOOTH_ADVERTISE, and BLUETOOTH_CONNECT.
  • Updated Android compile and target SDK to 31 (Android 12 (S)).
  • Updated Gradle and dependencies of the Android project.
  • Updated application of the example app

8.1.6 #

  • Android: Fixed a NullPointerException when changing permissions in the Location Settings intent.

8.1.5 #

  • Android: Fixed deprecation warnings/errors when compileSdkVersion was set to 31 (Android S/12).

8.1.4+2 #

  • iOS: fixed memory error that occurred on iOS 12.2 and below (see issue #638).

8.1.4+1 #

  • Fix a bug where after allowing the location permission and requesting it again would lead to a memory error.

8.1.4 #

  • Fix bug where requesting locationAlways permission sometimes returns PermissionStatus.Denied instead of PermissionStatus.Granted.

8.1.3 #

  • Fix bug where locationAlways returns PermanentlyDenied;
  • Updated the for requesting the locationAlways permission the correct way.

8.1.2 #

  • Suppress deprecation warnings on iOS for code that specifically targets older iOS versions (see issue #607).

8.1.1 #

  • Fixed deprecation issue when checking phone capabilities on iOS (see issue #597).

8.1.0 #

  • Added support for iOS 12+ Critical Alerts permission requesting.
    • NOTE: This requires applying to Apple and receiving a special entitlement from them in order to work. See this article for an explanation of how to use Critical Alerts.
  • Added support for Android M+ Access Notification Policy permission requesting (ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS).
    • Note: This opens a general page in settings, not specific to the package.

8.0.1 #

  • Updated API documentation for the PermissionStatus.permanentlyDenied status.

8.0.0+2 #

  • Fix broken Podfile link noted at 8.0.0.
  • Fix the information link noted at Podfile.

8.0.0+1 #

  • Updated the setup section about the Podfile and changed a minor spelling mistake.

8.0.0 #

This release contains the following breaking changes:

  • Starting from this version the permissions on iOS are disabled by default. To enable permission, specify the correct GCC_PREPROCESSOR_DEFINITIONS in the ios/Podfile file. For an example check out the Podfile of the example application.
  • Added support for the "AppTrackingTransparency" permission on iOS.

7.2.0 #

  • Added support for the "REQUEST_INSTALL_PACKAGES" permission on Android.

7.1.1 #

  • Improved the example app by using the Baseflow Plugin Template and moving all the functionality to the main.dart file.

7.1.0 #

  • Added support for the "SYSTEM_ALERT_WINDOW" permission on Android.

7.0.0 #

This release contains the following breaking changes:

  • Updated compile SDK version to 30 in the build.gradle for handling the MANAGE_EXTERNAL_STORAGE permission;
  • Added the MANAGE_EXTERNAL_STORAGE permission for Android R and up;
  • Registered listeners on the plugin level to prevent memory leaks or unwanted behavior.

6.1.3 #

  • Implement equality operator on the Permission class;
  • Updated the with instructions on enabling/ disabling the Bluetooth permissions on iOS;
  • Corrected some spelling mistakes in the

6.1.2 #

  • Correctly handle the ACCESS_MEDIA_LOCATION and ACCESS_ACTIVITY_RECOGNITION permissions on pre-Android Q devices (permissions should be implicitly granted on pre-Android Q).

6.1.1 #

  • Added unit tests to guard API against breaking changes.

6.1.0 #

  • Added support for Bluetooth permissions;
  • Workaround for ignoring battery optimizations on pre-M Android devices (see PR #376).

6.0.1+1 #

  • Fixed content of the file.

6.0.1 #

  • Fixed deprecation warning when building Android projects.

6.0.0 #

This release includes the following breaking changes:

  • Migrated to null safety
  • Removed PermissionStatus.undetermined, PermissionStatus.denied will be used instead (see our "Changes in 6.0.0" wiki page for more details).

5.1.0+2 #

  • Solve mismatch with permission constants between Dart and Android (due to the addition of permission on iOS);
  • Fix the compile error that occurred when on iOS the "PERMISSION_PHOTOS" macro is deactivated (meaning code dealing with the PHPhotoLibrary library is removed from the code base).

5.1.0+1 #

  • Recreate the iOS part of the example project based on the Flutter stable channel (the previous version was accidentally created with the Flutter beta channel).

5.1.0 #

  • Added support for the limited photo permission available on iOS 14 and up;
  • Fixed deprecated warning on iOS;
  • Added support for the "READ_PHONE_NUMBERS" permission on Android;
  • Fix a link to the contribution guide in the

5.0.1+2 #

  • Pin dependency on permission_handler_platform_interface on version 2.0.1.

5.0.1+1 #

  • Fixes Typo
  • Issue #233 * on 5.0: Solved a bug that prevented Android applications running in the background to check the permission status.

5.0.1 #

  • Update permission_handler_platform_interface 2.0.1

5.0.0+hotfix.10 #

  • Revert pull-request #317

5.0.0+hotfix.9 #

  • Solved an issue where kCLAuthorizationStatusAuthorizedWhenInUse was returning PermissionStatusDenied (see #317)

5.0.0+hotfix.8 #

  • Solved an issue on iOS where requesting notification permissions returned prematurely (see pull-request #297)

5.0.0+hotfix.7 #

  • ** Mistake release please don't use this version **

5.0.0+hotfix.6 #

  • Solved an issue on iOS where requesting notification permissions always resulted in a "granted" result (see pull-request #289)

5.0.0+hotfix.5 #

  • Remove the use of the deprecated pre-iOS 8 API causing users to compile issues (see issue #277).

5.0.0+hotfix.4 #

  • Solve issue on Android causing an IllegalStateException (#267).

5.0.0+hotfix.3 #

  • Includes the changes of 4.4.0+hotfix.4 (which was released to be backward compatible).

5.0.0+hotfix.2 #

  • Removed some residual usages of the PermissionStatusUnknown constants in #ifdef statements that were not found by the compiler.

5.0.0+hotfix.1 #

  • Make sure all enums from permission_handler_platform_interface: 2.0.0 are exposed through the permission_handler.

5.0.0 #

  • BREAKING: Implemented more intuitive API exposed by permission_handler_platform_interface: 2.0.0 (#230).

4.4.0+hotfix.4 #

  • Android: solved issue where permission_handler is used in a service (see #251)

4.4.0+hotfix.3 #

IGNORE THIS VERSION, it was released by accident and contains the same code as 4.4.0+hotfix.2

4.4.0+hotfix.2 #

  • Issue #235: Solved a bug that made it impossible to request service status on Android 7;
  • Issue #237: Solved a bug that crashes the application when canceling the "Ignore battery optimizations" request for permissions.

4.4.0+hotfix.1 #

  • Issue #233: Solved a bug that prevented Android applications from running in the background to check the permission status.

4.4.0 #

  • Updated plugin structure to conform to the Flutter federated plugin architecture. This will make it easier to add new platform implementations (see:;
  • Android: Migrate to FlutterPlugin Android API (better support for Add-to-App);
  • Android: Suppress JAVA warnings which are generated to old platform code (only executes on older platforms);
  • Android: Fixed issue which sometimes results in illegal cast exception.

4.3.0 #

  • Allow requesting location permissions when location services are disabled (on iOS this will redirect the user to the Location settings page);
  • Android: Add support for requesting Activity Recognition permissions;
  • Confirm to Effective Dart guidelines;
  • Documented all public API members;
  • Fixed several typos in the

4.2.0+hotfix.3 #

  • Android: Fixes a bug which in some cases caused the permission neverAskAgain to be returned incorrectly.

4.2.0+hotfix.2 #

  • Android: Fixes a bug where permissions are reported as neverAskAgain incorrectly after calling requestPermissions method.

4.2.0+hotfix.1 #

  • Android: Fixes a bug where permissions are reported as neverAskAgain incorrectly.

4.2.0 #

  • Android: Methods checkPermissionStatus and requestPermissions now support the additional neverAskAgain status.

4.1.0 #

  • iOS: Added option to exclude permissions logic using macros. This allows developers to submit their app to the AppStore without having to include all permissions in their Info.plist;
  • Android: Support ANSWER_PHONE_CALLS permission for API 26 and higher;
  • Android: Support ACCESS_MEDIA_LOCATION permission for API 26 and higher;
  • Android: Synchronized Gradle version with Flutter stable (1.12.13+hotfix.5).

4.0.0 #

  • iOS: Added support for requesting permissions on the DOCUMENTS and DOWNLOADS folder (thanks to @phranck);
  • Android: Fix the PROCESS_OUTGOING_CALLS permissions which have been deprecated in API 29.

3.3.0 #

  • Android: Add support for requesting the background location permission within the locationAlways group.
  • Android: Update AGP, Gradle, and AndroidX dependencies

3.2.2 #

  • Fixed problem with dependency on specific version of gradle wrapper on Android.

3.2.1+1 #

  • Reverted the update of the 'meta' plugin since Flutter SDK depends on version 1.1.6

3.2.1 #

  • Updated dependency on 'meta' to the latest version.

3.2.0 #

  • Add support for Androids' "ignore battery optimizations" permission;
  • Improve error logging;
  • Documented support for AndroidX.

3.1.0 #

  • Support service status inquiry for phone permission on iOS & Android.

3.0.2 #

  • Fixed bug when rapidly requesting permissions (#23);
  • Rename Enums.h to PermissionHandlerEnums.h to prevent conflicts with the geolocator (#104);
  • Update the Android permission request code to prevent conflicts with geolocator (#111);
  • Update Gradle infrastructure.

3.0.1 #

  • Mark the Swift pod as static

3.0.0 #

  • Converted the iOS version from Swift to Objective-C, reducing the size of the final binary considerably.

2.2.0 #

  • Added new method checkServiceStatus to allow users to check if the location services (on Android and iOS) and motion services (iOS only) are enabled;
  • When checking permission status (using checkPermissionStatus) return PermissionStatus.disabled when permissions are granted or denied and the location services (on Android and iOS) or the motion services (iOS only) are disabled.

2.1.3 #

  • Fixed bug on iOS where the result of the openAppSettings call always returned false;
  • Upgrade the Android plugin to support AndroidX and the latest Gradle and Kotlin versions;
  • Added Swift version number to the Podfile of the plugin;
  • Updated flutter static analyses to conform to the latest recommendations.

2.1.2 #

  • Make sure the Permission Handler compiles with the latest iOS SDK

2.1.1 #

  • Update to the latest version of Swift (4.2);
  • Make sure that the correct Swift version is set in the Podfile of consuming Apps;
  • Updated configuration for static code analyses, so it complies with the Flutter recommendations.

2.1.0 #

  • Added Android support to check if location services are enabled. If location services are not running the permission check returns PermissionStatus.DISABLED.

2.0.1 #

  • Fix bug with dependency on library
  • Update used Kotlin and Gradle versions

2.0.0 #

  • Make methods non-static so users can create an instance or override

1.0.1 #

  • Converted the plugin into a library so that developers don't have to import additional files;
  • Updated the to fix the example code.

1.0.0 #

  • Initial release.