Auf dieser Seite

Anwendungsberechtigungen

Viele Funktionen heutiger Geräte und Betriebssysteme können bei missbräuchlicher Nutzung erhebliche Auswirkungen auf Datenschutz, Sicherheit und Leistung haben. Daher verlangen Plattformen zunehmend die ausdrückliche Zustimmung des Nutzers, bevor auf diese Funktionen zugegriffen werden darf.

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

Verwendung

Eine Funktion, für die in der Regel die Zustimmung des Benutzers erforderlich ist, ist der Zugriff auf das Mikrofon des Geräts. Eine Anwendung zur Aufnahme von Sprachmemos könnte anfangs etwa wie folgt aussehen:

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

Um sicherzustellen, dass diese App auf Plattformen, die eine Zustimmung des Nutzers für den Zugriff auf das Mikrofon erfordern, einwandfrei funktioniert, würden wir sie wie folgt erweitern:

void VoiceMemoWidget::onRecordingInitiated()
{
    QMicrophonePermission microphonePermission;
    switch (qApp->checkPermission(microphonePermission)) {
    case Qt::PermissionStatus::Undetermined:
        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 Mikrofonberechtigung bereits kennen. Ist dies nicht der Fall, initiieren wir eine Berechtigungsanfrage, um den aktuellen Status zu ermitteln, wobei der Nutzer möglicherweise um seine Zustimmung gebeten wird. Wir verknüpfen das Ergebnis der Anfrage mit dem Slot, in dem wir uns gerade befinden, sodass wir eine weitere Gelegenheit erhalten, den Berechtigungsstatus auszuwerten.

Sobald der Berechtigungsstatus bekannt ist – sei es, weil uns die Berechtigung bereits zu einem früheren Zeitpunkt erteilt oder verweigert wurde, oder nachdem wir das Ergebnis der soeben initiierten Anfrage erhalten haben –, leiten wir den Nutzer entweder zu einem Dialog weiter, in dem erklärt wird, warum wir derzeit keine Sprachnotizen aufnehmen können (falls die Berechtigung verweigert wurde), oder wir fahren mit der Nutzung des Mikrofons fort (falls die Berechtigung erteilt wurde).

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

Berechtigungen deklarieren

Auf einigen Plattformen müssen die angeforderten Berechtigungen bereits bei der Erstellung der Anwendung im Voraus deklariert werden.

Apple-Plattformen

Jede von Ihnen angeforderte Berechtigung muss in der Datei der Anwendung mit einer sogenannten Nutzungsbeschreibung versehen sein Info.plist Datei der Anwendung enthalten sein, in der beschrieben wird, warum die Anwendung Zugriff auf die jeweilige Berechtigung benötigt. Zum Beispiel:

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

Die entsprechenden Schlüssel für die Nutzungsbeschreibung sind in der Dokumentation zu den einzelnen Berechtigungstypen beschrieben.

Um sicherzustellen, dass das entsprechende Berechtigungs-Backend in Ihre Anwendung integriert wird, weisen Sie das Build-System bitte auf Ihre benutzerdefinierte Datei „ Info.plist “ hin.

Android

Jede von Ihnen angeforderte Berechtigung muss durch einen Eintrag in der Datei „ uses-permission “ der Anwendung unter „ AndroidManifest.xml “ ergänzt werden. Beispiel:

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

Um sicherzustellen, dass das entsprechende Berechtigungs-Backend in Ihre Anwendung integriert wird, verweisen Sie das Build-System bitte auf Ihre benutzerdefinierte ` AndroidManifest.xml `-Date i oder verwenden Sie ` qt_add_android_permission()`.

Die entsprechenden Berechtigungsnamen sind in der Dokumentation zu den einzelnen Berechtigungstypen beschrieben.

Hinweis: Bei Verwendung dieser API muss das Tag „ <!-- %%INSERT_PERMISSIONS --> “ in der Datei „AndroidManifest.xml“ vorhanden sein. Weitere Informationen zur Verwendung dieses Tags finden Sie unter „Qt-Berechtigungen und -Funktionen“.

Verfügbare Berechtigungen

Die folgenden Berechtigungstypen sind verfügbar:

QBluetoothPermission

Auf Bluetooth-Peripheriegeräte zugreifen

QCalendarPermission

Auf den Kalender des Benutzers zugreifen

QCameraPermission

Zugriff auf die Kamera zum Aufnehmen von Fotos oder Videos

QContactsPermission

Zugriff auf die Kontakte des Benutzers

QLocationPermission

Zugriff auf den Standort des Benutzers

QMicrophonePermission

Zugriff auf das Mikrofon zur Überwachung oder Aufzeichnung von Ton

Hinweis: Die verfügbaren Berechtigungstypen decken die Kernfunktionen von Qt-Modulen wie „ Qt Multimedia “ und „ Qt Positioning “ ab, umfassen jedoch nicht alle plattformspezifischen Berechtigungen. Benutzerdefinierte Berechtigungstypen werden derzeit nicht unterstützt.

Bewährte Vorgehensweisen

Um dem Endbenutzer die bestmögliche Benutzererfahrung zu bieten, empfehlen wir die Befolgung der folgenden bewährten Vorgehensweisen bei der Verwaltung von Anwendungsberechtigungen:

  • Fordern Sie nur die unbedingt erforderlichen Berechtigungen an. Wenn Sie beispielsweise nur Zugriff auf das Mikrofon benötigen, fordern Sie nicht vorsorglich die Kameraberechtigung an. Nutzen Sie die Eigenschaften der einzelnen Berechtigungstypen, um den Umfang der Berechtigung noch weiter einzuschränken, beispielsweise mit ` QContactsPermission::setAccessMode()` für den Lesezugriff.
  • Fordern Sie Berechtigungen als Reaktion auf bestimmte Aktionen des Nutzers an. Verschieben Sie beispielsweise die Anforderung der Mikrofonberechtigung, bis der Nutzer die Schaltfläche zum Aufnehmen von Audio drückt. Durch die Verknüpfung der Berechtigungsanforderung mit einer bestimmten Aktion wird dem Nutzer klarer, warum die Berechtigung benötigt wird. Fordern Sie nicht alle benötigten Berechtigungen bereits beim Start an.
  • Bieten Sie bei Bedarf zusätzliche Informationen und Erläuterungen an. Manchmal reicht die Aktion des Benutzers als Kontext nicht aus. Ziehen Sie in Betracht, einen Erklärungsdialog anzuzeigen, nachdem der Benutzer die Aktion ausgelöst hat, aber noch bevor die Berechtigung angefordert wird, damit der Benutzer weiß, was passieren wird, wenn anschließend der Systemberechtigungsdialog erscheint.
  • Seien Sie transparent und erklären Sie ausdrücklich, warum Berechtigungen benötigt werden. Erläutern Sie in Erklärungsdialogen und Nutzungsbeschreibungen transparent, warum die jeweilige Berechtigung erforderlich ist, damit Ihre Anwendung eine bestimmte Funktion bereitstellen kann, damit Nutzer fundierte Entscheidungen treffen können.
  • Berücksichtigen Sie abgelehnte Berechtigungen. Die von Ihnen angeforderten Berechtigungen können aus verschiedenen Gründen abgelehnt werden. Sie sollten diese Situation stets berücksichtigen, indem Sie die Benutzererfahrung Ihrer Anwendung auf elegante Weise anpassen und dem Nutzer klare Erklärungen zur Situation bereitstellen.
  • Fordern Sie niemals Berechtigungen über eine Bibliothek an. Die Anforderung von Berechtigungen sollte so nah wie möglich am Nutzer erfolgen, wo die Informationen verfügbar sind, die für fundierte Entscheidungen zu den oben genannten Punkten erforderlich sind. Bibliotheken können Berechtigungen prüfen, um sicherzustellen, dass sie über die Voraussetzungen für ihre Arbeit verfügen. Ist der Status einer Berechtigung jedoch unbestimmt oder wurde sie verweigert, sollte dies über die API der Bibliothek zurückgemeldet werden, damit die Anwendung ihrerseits die erforderlichen Berechtigungen anfordern kann.

Siehe auch „Information Property List Files “ und „Qt Creator: Editing Manifest Files“.

© 2026 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.