Skip to content

Permissions

Midori edited this page Aug 9, 2023 · 43 revisions

Overview

In iOS, it is not possible to save media to an album using only NSPhotolibraryAddUsageDescription. This is a swift limitation. If you have any complaints, please make a request to swift.

Gal.hasAccess(toAlbum: true) returns true when NSPhotoLibraryUsageDescription is limited or all. If you want to put media in an album created by users or other apps, you should avoid using Gal.hasAccess for confirmation.

Android iOS
Just put WRITE_EXTERNAL_STORAGE NSPhotoLibraryAddUsageDescription or NSPhotoLibraryUsageDescription (limited, all)
Put to album ur app created (will create) WRITE_EXTERNAL_STORAGE NSPhotoLibraryUsageDescription (limited, all)
Put to album created by users or other apps WRITE_EXTERNAL_STORAGE NSPhotoLibraryUsageDescription (all)

🚨 If you try to save media in an album created by users or other apps, with NSPhotoLibraryUsageDescription set to limited, gal will create a new album since it cannot reference that album.

Settings

Here we will only discuss the versions supported by the latest Flutter stable (Android >= 21, iOS >= 11).
Also, there may be changes in the specifications.

Android

In Android <23, Write permissions to the gallery app are allowed by default.

In Android >=23 && <29, Writing to the gallery app requires the explicit statement
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="29" /> in the AndroidManifest.xml.

In Android >=29, Write permissions to the gallery app are allowed by default.

πŸ’‘ In older articles and projects, sometimes it is written to add the android:requestLegacyExternalStorage="true" key. But the key is basically unnecessary. Because, that was added as a temporary measure when Google changed the system regarding storage and its permissions in Android API 29.

Docs

iOS

In iOS >=11, Write permissions to the gallery app requires the explicit statement
<key>NSPhotoLibraryAddUsageDescription</key> in the info.plist.

Docs

Dialogs

Android

Talks about the version to which access is not granted by default (Android >=23 && <29).
It will appear until the user checks the "Never show again" box in the dialog
and chooses to reject it, or until the user chooses to reject it from the app settings.

iOS

Due to Apple restrictions, it can basically only be displayed once.

Docs