Anwendungsberechtigungen

Viele Funktionen der heutigen Geräte und Betriebssysteme können bei Missbrauch erhebliche Auswirkungen auf den Datenschutz, die Sicherheit und die Leistung haben. Daher ist es zunehmend üblich, dass Plattformen vor dem Zugriff auf diese Funktionen die ausdrückliche Zustimmung des Nutzers verlangen.

Die Qt-Berechtigungs-APIs ermöglichen es der Anwendung, die Berechtigung für solche Funktionen plattformübergreifend zu prüfen oder anzufordern.

Verwendung

Eine Funktion, die in der Regel die Zustimmung des Benutzers erfordert, ist der Zugriff auf das Mikrofon des Geräts. Eine Anwendung für die Aufnahme von Sprachnotizen würde vielleicht zunächst so aussehen:

void VoiceMemoWidget::onRecordingInitiated()
{
    m_microphone->startRecording();
}

Um sicherzustellen, dass diese Anwendung auch auf Plattformen funktioniert, die die Zustimmung des Benutzers für den Mikrofonzugriff erfordern, würden wir sie wie folgt erweitern:

void VoiceMemoWidget::onRecordingInitiated() { QMicrophonePermission microphonePermission; switch (qApp->checkPermission(microphonePermission)) { case Qt::PermissionStatus::Unbestimmt:        qApp->requestPermission(microphonePermission, this,
                   &VoiceMemoWidget::onRecordingInitiated); return; case Qt::PermissionStatus::Denied:  m_permissionInstructionsDialog->show(); return; case Qt::PermissionStatus::Granted:  m_microphone->startRecording(); } }

Zunächst prüfen wir, ob wir den Status der Mikrofonerlaubnis bereits kennen. Ist dies nicht der Fall, starten wir eine Berechtigungsanfrage, um den aktuellen Status zu ermitteln, bei der der Benutzer möglicherweise um seine Zustimmung gebeten wird. Wir verbinden das Ergebnis der Anfrage mit dem Slot, in dem wir uns bereits befinden, so dass wir eine weitere Chance erhalten, den Status der Erlaubnis zu ermitteln.

Sobald der Erlaubnisstatus bekannt ist, entweder weil uns die Erlaubnis zu einem früheren Zeitpunkt erteilt oder verweigert wurde, oder nachdem wir das Ergebnis der soeben initiierten Anfrage erhalten haben, leiten wir den Benutzer zu einem Dialog weiter, in dem erklärt wird, warum wir zu diesem Zeitpunkt keine Sprachnotizen aufnehmen können (wenn die Erlaubnis verweigert wurde), oder wir fahren mit der Verwendung des Mikrofons fort (wenn die Erlaubnis erteilt wurde).

Hinweis: Unter macOS und iOS können Berechtigungen derzeit nur für GUI-Anwendungen angefordert werden.

Berechtigungen deklarieren

Einige Plattformen verlangen, dass die von Ihnen angeforderten Berechtigungen im Voraus zur Erstellungszeit deklariert werden.

Apple-Plattformen

Jede von Ihnen angeforderte Berechtigung muss von einer so genannten Verwendungsbeschreibung in der Anwendungsdatei Info.plist Datei, in der beschrieben wird, warum die Anwendung auf die gegebene Berechtigung zugreifen muss. Zum Beispiel:

<key>NSMicrophoneUsageDescription</key>
<string>The microphone is used to record voice memos.</string>

Die entsprechenden Verwendungsbeschreibungsschlüssel sind in der Dokumentation für jeden Berechtigungstyp beschrieben.

Um sicherzustellen, dass das relevante Berechtigungs-Backend in Ihrer Anwendung enthalten ist, verweisen Sie bitte das Build-System auf Ihre benutzerdefinierte Info.plist.

Android

Jede von Ihnen angeforderte Berechtigung muss von einem uses-permission Eintrag in der AndroidManifest.xml Datei der Anwendung begleitet werden. Zum Beispiel:

<manifest ...>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
</manifest>

Die entsprechenden Berechtigungsnamen sind in der Dokumentation für jeden Berechtigungstyp beschrieben.

Verfügbare Berechtigungen

Die folgenden Berechtigungstypen sind verfügbar:

QBluetoothPermission

Zugriff auf Bluetooth-Peripheriegeräte

QCalendarPermission

Zugriff auf den Kalender des Benutzers

QCameraPermission

Zugriff auf die Kamera zum Aufnehmen von Bildern oder Videos

QContactsPermission

Zugriff auf die Kontakte des Benutzers

QLocationPermission

Zugriff auf den Standort des Benutzers

QMicrophonePermission

Zugriff auf das Mikrofon zur Überwachung oder Aufnahme von Ton

Bewährte Praktiken

Um die bestmögliche Benutzererfahrung für den Endbenutzer zu gewährleisten, empfehlen wir, die folgenden Best Practices für die Verwaltung von Anwendungsberechtigungen zu übernehmen:

  • Fordern Sie nur die minimal erforderlichen Berechtigungen an. Wenn Sie z. B. nur Zugriff auf das Mikrofon benötigen, sollten Sie nicht vorsichtshalber eine Kamerarechte anfordern. Verwenden Sie die Eigenschaften einzelner Berechtigungstypen, um den Berechtigungsumfang noch weiter einzuschränken, z. B. QContactsPermission::setAccessMode(), um nur Lesezugriff anzufordern.
  • Fordern Sie Berechtigungen in Reaktion auf bestimmte Aktionen des Benutzers an. Fordern Sie z. B. die Mikrofonberechtigung erst dann an, wenn der Benutzer die Taste zur Audioaufnahme drückt. Durch die Verknüpfung der Berechtigungsanforderung mit einer bestimmten Aktion kann der Benutzer besser nachvollziehen, warum die Berechtigung benötigt wird. Fordern Sie nicht alle benötigten Berechtigungen beim Start an.
  • Geben Sie bei Bedarf zusätzliche Informationen und Erklärungen. Manchmal ist die Aktion des Benutzers nicht genug Kontext. Ziehen Sie in Erwägung, einen Erklärungsdialog einzublenden, nachdem der Benutzer die Aktion eingeleitet hat, aber bevor er die Berechtigung anfordert, damit der Benutzer weiß, was passieren wird, wenn das Dialogfeld für die Systemberechtigung angezeigt wird.
  • Machen Sie transparent und deutlich, warum Berechtigungen benötigt werden. Geben Sie in Erklärungsdialogen und Verwendungsbeschreibungen transparent an, warum eine bestimmte Berechtigung für Ihre Anwendung erforderlich ist, um eine bestimmte Funktion bereitzustellen, damit die Benutzer fundierte Entscheidungen treffen können.
  • Berücksichtigen Sie verweigerte Berechtigungen. Die von Ihnen angeforderten Berechtigungen können aus verschiedenen Gründen verweigert werden. Sie sollten diese Situation immer berücksichtigen, indem Sie das Erlebnis Ihrer Anwendung sanft herabsetzen und dem Benutzer klare Erklärungen zu dieser Situation geben.
  • Fordern Sie niemals Berechtigungen von einer Bibliothek an. Die Anforderung von Berechtigungen sollte so nah wie möglich am Benutzer erfolgen, wo die Informationen, die für eine gute Entscheidung in Bezug auf die oben genannten Punkte erforderlich sind, verfügbar sind. Bibliotheken können Berechtigungen prüfen, um sicherzustellen, dass sie die Voraussetzungen für ihre Arbeit haben, aber wenn die Berechtigung unbestimmt ist oder verweigert wird, sollte dies durch die API der Bibliothek widergespiegelt werden, so dass die Anwendung ihrerseits die erforderlichen Berechtigungen anfordern kann.

Siehe auch Informationseigenschaftslistendateien und Qt Creator: Bearbeiten von Manifestdateien.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.