Photo Library Permission — Grundlagen, Zugriffstypen und Funktionsprinzip

Autor: IT Sectr Veröffentlicht: 2026-05-21 Lesezeit: 8 Min.

Photo Library Permission ist eine Berechtigung, die eine App benötigt, um auf Fotos und Videos zuzugreifen, die auf dem Gerät des Benutzers gespeichert sind. Sie wird benötigt, um Bilder aus der Galerie auszuwählen, Mediendateien zu speichern und Fotoalben zu verwalten. Laut Apple Developer Documentation, 2024 müssen Apps ab iOS 14 Zugriff auf eine begrenzte Bibliothek anfordern, nicht auf alle Fotos auf einmal.

Wichtige Punkte

  • Photo Library Permission — Berechtigung zum Lesen und Schreiben von Mediendateien in der Gerätegalerie, erforderlich für die Arbeit mit Fotos und Videos.
  • Android verwendet READ_MEDIA_IMAGES, READ_MEDIA_VIDEO (Android 13+) oder READ_EXTERNAL_STORAGE für den Galeriezugriff.
  • iOS verwendet PHPhotoLibrary mit eingeschränktem Zugriff (Limited Photo Library Access) ab iOS 14.
  • Einzelfotos auswählen über die Systemauswahl (PhotoPicker) erfordert keine Berechtigung für den Zugriff auf die gesamte Bibliothek.
  • In die Galerie schreiben erfordert eine separate Schreibberechtigung (WRITE_EXTERNAL_STORAGE unter Android, PHPhotoLibrary unter iOS).

Grundlagen von Photo Library Permission

Photo Library Permission ist eine Systemberechtigung, die den Zugriff einer App auf auf dem Gerät gespeicherte Mediendateien regelt. Sie umfasst sowohl das Lesen (Anzeigen und Auswählen von Fotos und Videos) als auch das Schreiben (Speichern neuer Dateien in der Galerie). Mobile Plattformen betrachten die Medienbibliothek als sensible Daten, da Fotos persönliche und private Informationen enthalten können.

Unter Android 13 (API 33) hat Google die einzelne READ_EXTERNAL_STORAGE-Berechtigung in drei separate aufgeteilt: READ_MEDIA_IMAGES für Fotos, READ_MEDIA_VIDEO für Videos und READ_MEDIA_AUDIO für Audio. Dies ermöglicht Benutzern, nur Zugriff auf einen bestimmten Medientyp zu gewähren. Unter iOS ermöglicht PhotoKit ab iOS 14 Benutzern, bestimmte Fotos für den Zugriff auszuwählen, anstatt die gesamte Bibliothek zu öffnen.

Laut Counterpoint Research (2024) fordern über 70% der mobilen Apps in den Kategorien soziale Netzwerke, Kommunikation und Foto-Editoren Photo Library Permission an. Gleichzeitig verweigern 32% der Benutzer den Galeriezugriff, wenn sie nicht verstehen, warum die App ihre Fotos benötigt. Apple und Google empfehlen, die systemeigene PhotoPicker-Auswahl zum Auswählen einzelner Dateien zu verwenden, ohne vollständigen Zugriff anzufordern.

Galeriezugriff unter Android

Der Galeriezugriff unter Android hat sich mit der Veröffentlichung von Android 13 erheblich geändert. Anstelle einer einzigen READ_EXTERNAL_STORAGE-Berechtigung wurden granulare Berechtigungen für jeden Medientyp eingeführt, die den Benutzern mehr Kontrolle geben.

Berechtigungen unter Android 13+

Ab Android 13 wird READ_MEDIA_IMAGES für den Foto-Zugriff und READ_MEDIA_VIDEO für den Video-Zugriff verwendet. Die READ_EXTERNAL_STORAGE-Berechtigung gewährt keinen Zugriff mehr auf Mediendateien — sie bleibt nur zum Lesen von Nicht-Medien-Dateien aus dem gemeinsamen Speicher erhalten. Die Deklaration im Manifest sieht so aus:

xml
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_MEDIA_VIDEO" />

Kompatibilität mit Android 12 und niedriger

Für Abwärtskompatibilität mit Android 12 und niedriger müssen Sie auch READ_EXTERNAL_STORAGE deklarieren. Android 13 ignoriert diese Berechtigung jedoch automatisch, wenn die neuen granularen Berechtigungen vorhanden sind. Verwenden Sie das Attribut android:maxSdkVersion="32" im Manifest für die alte Berechtigung, um sie auf neueren Versionen auszublenden. Dies verhindert redundante Anfragen auf Geräten mit Android 13+.

xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
    android:maxSdkVersion="32" />

Laufzeitanfrage in Kotlin

Die Laufzeitanfrage für Photo Library Permission unter Android erfolgt über die Activity Result API. Beispiel für die Anfrage zum Zugriff auf Bilder:

kotlin
private val photoPermissionLauncher =
    registerForActivityResult(ActivityResultContracts.RequestPermission()) { granted ->
    if (granted) {
        loadGalleryImages()
    } else {
        showPermissionDenied()
    }
}

fun pickPhoto() {
    val permission = if (Build.version.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
        Manifest.permission.READ_MEDIA_IMAGES
    } else {
        Manifest.permission.READ_EXTERNAL_STORAGE
    }
    if (ContextCompat.checkSelfPermission(this, permission)
        == PackageManager.PERMISSION_GRANTED) {
        loadGalleryImages()
    } else {
        photoPermissionLauncher.launch(permission)
    }
}

Galeriezugriff unter iOS

Der Galeriezugriff unter iOS wird über das PhotoKit-Framework und die Schlüssel NSPhotoLibraryUsageDescription und NSPhotoLibraryAddUsageDescription in Info.plist verwaltet. Ab iOS 14 können Benutzer nur ausgewählten Fotos Zugriff gewähren (Limited Photo Library).

Info.plist-Konfiguration

Zum Lesen von Fotos aus der Bibliothek ist NSPhotoLibraryUsageDescription erforderlich, zum Schreiben (Speichern von Fotos) ist NSPhotoLibraryAddUsageDescription erforderlich. Wenn die App nur Medien speichert, aber nicht liest, ist der zweite Schlüssel ausreichend.

xml
<key>NSPhotoLibraryUsageDescription</key>
<string>Die App benötigt Zugriff auf Fotos, um ein Profilbild auszuwählen und Schnappschüsse zu veröffentlichen.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Die App benötigt Zugriff, um bearbeitete Fotos in Ihrer Galerie zu speichern.</string>

Anfrage in Swift

Die Foto-Zugriffsanfrage unter iOS erfolgt über PHPhotoLibrary.requestAuthorization. Ab iOS 14 zeigt der Status .limited an, dass der Benutzer Zugriff auf eine begrenzte Anzahl von Fotos gewährt hat.

swift
import PhotosUI

func requestPhotoLibraryAccess() {
    PHPhotoLibrary.requestAuthorization { status in
        DispatchQueue.main.async {
            switch status {
            case .authorized:
                self.loadPhotoLibrary()
            case .limited:
                self.loadSelectedPhotos()
            case .denied, .restricted:
                self.showSettingsAlert()
            case .notDetermined:
                break
            }
        }
    }
}

private func loadPhotoLibrary() {
    let fetchOptions = PHFetchOptions()
    fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
    let assets = PHAsset.fetchAssets(with: .image, options: fetchOptions)
    // Behandlung der Anforderungsergebnisse
}

Behandlung von eingeschränktem Zugriff

Der Status .limited unter iOS 14+ bedeutet, dass der Benutzer nur Zugriff auf einige ausgewählte Fotos gewährt hat. Die App kann über einen Systemdialog erweiterten Zugriff anfordern, indem sie PHPhotoLibrary.shared().presentLimitedLibraryPicker aufruft. Es wird empfohlen, diesen Dialog nur anzuzeigen, wenn der Benutzer explizit eine Funktion anfordert, die zusätzliche Fotos benötigt.

PhotoPicker vs. Systemberechtigung

PhotoPicker ist eine Systemkomponente zum Auswählen von Mediendateien, die keine Berechtigung zum Zugriff auf die gesamte Bibliothek erfordert. Ab Android 13 und iOS 14 empfehlen Google und Apple die Verwendung von PhotoPicker anstelle der Anforderung von Photo Library Permission, wenn die App nur ein oder mehrere Fotos auswählen muss.

PhotoPicker unter Android

Unter Android 13+ ermöglicht der integrierte PhotoPicker (ActivityResultContracts.PickVisualMedia) Benutzern, ein Foto oder Video auszuwählen, ohne Zugriff auf die gesamte Galerie zu gewähren. Die App erhält nur die URI der ausgewählten Dateien. PhotoPicker funktioniert ohne Deklaration von Berechtigungen im Manifest.

kotlin
private val pickMedia =
    registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri ->
    if (uri != null) {
        // URI der ausgewählten Datei, ohne Zugriff auf die gesamte Bibliothek
        showImage(uri)
    }
}

fun selectPhoto() {
    pickMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly))
}

PHPicker unter iOS

Ab iOS 14+ wurde PHPickerViewController eingeführt — eine Systemauswahl, die ebenfalls keinen Zugriff auf die gesamte Bibliothek erfordert. PHPicker wird in einem separaten Prozess ausgeführt und hat keinen Zugriff auf die App-Bibliothek. Dies ist die bevorzugte Methode zum Auswählen von Fotos für die meisten Szenarien.

swift
import PhotosUI

func presentPhotoPicker() {
    var config = PHPickerConfiguration()
    config.selectionLimit = 1
    config.filter = .images

    let picker = PHPickerViewController(configuration: config)
    picker.delegate = self
    present(picker, animated: true)
}

Wann volle Berechtigung erforderlich ist

PhotoPicker ist nicht geeignet, wenn die App für Massenoperationen Zugriff auf die gesamte Bibliothek benötigt: Backup, Cloud-Synchronisation, Galerie-App, Dateimanager. In diesen Fällen müssen Sie Photo Library Permission anfordern und den Fall des eingeschränkten Zugriffs (Limited) behandeln. Für iOS ist die Behandlung des .limited-Status und das Angebot an Benutzer, den Zugriff zu erweitern, obligatorisch.

Best Practices für den Galeriezugriff

Best Practices für die Arbeit mit Photo Library Permission helfen, die Anzahl der Ablehnungen zu reduzieren und die Datenschutzanforderungen der Plattformen zu erfüllen.

Standardmäßig PhotoPicker verwenden

Verwenden Sie zum Auswählen eines oder mehrerer Fotos die systemeigene PhotoPicker- oder PHPicker-Auswahl. Diese Komponenten benötigen keine Berechtigungen und bieten die beste Benutzererfahrung. Fordern Sie vollständigen Galeriezugriff nur an, wenn die App-Funktionalität Zugriff auf die gesamte Medienbibliothek erfordert. Google und Apple empfehlen diesen Ansatz ausdrücklich in ihrer Entwicklerdokumentation.

Grund für den vollständigen Zugriff erklären

Wenn die App wirklich vollständigen Galeriezugriff benötigt, zeigen Sie einen vorbereitenden Bildschirm mit einer Erklärung an. Erklären Sie, warum alle Fotos benötigt werden und nicht nur eines. Beispielsweise sollte eine Backup-App erklären, dass sie alle Mediendateien scannt, um eine Kopie zu erstellen. Der Pre-Permission-Bildschirm ist aufgrund des Mechanismus für eingeschränkten Zugriff besonders wichtig für iOS.

Nur notwendige Berechtigungen anfordern

Wenn die App nur Fotos speichert, aber nicht liest (z. B. ein Foto-Editor, der das Ergebnis speichert), fordern Sie nur die Schreibberechtigung für die Galerie an. Unter Android ist dies WRITE_EXTERNAL_STORAGE (für Android 12 und niedriger) oder die MediaStore-API ohne Berechtigungen (für Android 10+). Unter iOS verwenden Sie NSPhotoLibraryAddUsageDescription ohne NSPhotoLibraryUsageDescription.

Häufig gestellte Fragen

Ist eine Berechtigung zum Speichern von Fotos unter Android 10+ erforderlich?

Ab Android 10 (API 29) erfordert das Speichern von Fotos über MediaStore keine WRITE_EXTERNAL_STORAGE-Berechtigung. Das System gewährt Zugriff auf den gemeinsamen Speicher zum Schreiben ohne explizite Berechtigung. Zum Lesen von Dateien anderer Benutzer ist weiterhin die entsprechende Berechtigung erforderlich.

Worin unterscheidet sich READ_EXTERNAL_STORAGE von READ_MEDIA_IMAGES?

READ_EXTERNAL_STORAGE ist die alte Berechtigung zum Lesen aller Dateien aus dem gemeinsamen Speicher (bis Android 12). READ_MEDIA_IMAGES ist eine neue granulare Berechtigung zum Lesen nur von Bildern (Android 13+). Benutzer können nur Zugriff auf Fotos gewähren, während der Zugriff auf Videos und Audio verweigert wird.

Wie behandelt man den .limited-Status unter iOS?

Der Status .limited bedeutet, dass der Benutzer einige Fotos für den Zugriff ausgewählt hat. Die App kann einen Systemerweiterungsdialog über PHPhotoLibrary.shared().presentLimitedLibraryPicker anzeigen. Es wird empfohlen, diesen Dialog nur auf explizite Anfrage des Benutzers anzuzeigen, z. B. beim Tippen auf eine Schaltfläche „Weitere Fotos hinzufügen“.

Kann man EXIF-Metadaten aus Fotos lesen?

Ja, mit Photo Library Permission kann die App EXIF-Daten lesen, einschließlich Geotags, Aufnahmedatum und Kameramodell. Unter iOS kann für den Zugriff auf Geotags eine zusätzliche Standortberechtigung erforderlich sein, da Apple GPS-Koordinaten als vertrauliche Daten betrachtet.

Wie wählt man ein Video aus der Galerie ohne Berechtigung aus?

Verwenden Sie die Systemauswahl: PHPicker mit filter = .videos unter iOS, PickVisualMedia mit VideoOnly unter Android. Unter Android können Sie auch Intent(Intent.ACTION_PICK) mit MediaStore.Video.Media.EXTERNAL_CONTENT_URI verwenden, aber dies erfordert die READ_EXTERNAL_STORAGE-Berechtigung auf Versionen unter Android 13.

Zusammenfassung

  • Photo Library Permission — Berechtigung zum Lesen und Schreiben von Mediendateien, erforderlich für Apps, die mit der Gerätegalerie arbeiten.
  • Android 13+ verwendet granulare Berechtigungen READ_MEDIA_IMAGES und READ_MEDIA_VIDEO anstelle der einzelnen READ_EXTERNAL_STORAGE.
  • iOS 14+ ermöglicht Benutzern, nur ausgewählten Fotos (Limited) über PhotoKit Zugriff zu gewähren.
  • PhotoPicker ist die empfohlene Methode zum Auswählen einzelner Dateien ohne Anforderung des vollständigen Bibliothekszugriffs.
  • In die Galerie schreiben erfordert unter Android 10+ keine Berechtigung über MediaStore, unter iOS ist NSPhotoLibraryAddUsageDescription erforderlich.
  • Pre-Permission-Bildschirm mit Erklärung des Zwecks der Fotosammlung erhöht die Zustimmungsrate und reduziert Ablehnungen.
  • Eingeschränkter Zugriff unter iOS erfordert zusätzliche Behandlung und die Möglichkeit, erweiterten Zugriff über einen Systemdialog anzufordern.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch