Auf dieser Seite

QML-Anwendungsberechtigungen

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

Das Qt Qml Core Modul stellt die Qt-C++-Funktionalität für Anwendungsberechtigungen über eine Reihe von Berechtigungstypen für Qml bereit, mit denen Berechtigungen plattformübergreifend geprüft oder angefordert werden können.

BluetoothPermission

Zugriff auf die Bluetooth-Peripheriegeräte des Benutzers

CalendarPermission

Zugriff auf den Kalender des Benutzers

CameraPermission

Zugriff auf die Kamera des Benutzers

ContactsPermission

Zugriff auf die Kontakte des Benutzers

LocationPermission

Zugriff auf den Standort des Benutzers

MicrophonePermission

Zugriff auf das Mikrofon des Benutzers

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

Verwendung

Um eine bestimmte Berechtigung in Ihrer Anwendung zu prüfen und anzufordern, binden Sie eine Instanz des entsprechenden Berechtigungstyps ein und legen Sie bei Bedarf dessen Eigenschaften fest:

CalendarPermission {
    id: calendarPermission
    accessMode: CalendarPermission.ReadWrite
}

Der Typ kann verwendet werden, um den aktuellen Status der Berechtigungen zu prüfen, beispielsweise zur Steuerung einer zustandsbasierten Benutzeroberfläche:

states: [
    State {
        name: "waitingForPermission"
        when: calendarPermission.status == Qt.PermissionStatus.Undetermined
        PropertyChanges { target: permissionRequestItem; visible: true }
    },
    State {
        name: "permissionDenied"
        when: calendarPermission.status == Qt.PermissionStatus.Denied
        PropertyChanges { target: permissionDeniedItem; visible: true }
    }
]

Im obigen Beispiel werden zwei berechtigungsspezifische Elemente eingeblendet, wenn die Berechtigung nicht erteilt wurde. Die Benutzeroberfläche für die Anforderung könnte beispielsweise wie folgt aussehen:

Rectangle {
    id: permissionRequestItem
    anchors.fill: parent
    visible: false

    Text {
        anchors.centerIn: parent
        text: qsTr("We need your permission to access the calendar."
            + "Please tap this screen to request permission.")

    }

    MouseArea {
        anchors.fill: parent
        onClicked: calendarPermission.request()
    }
}

Mit einer entsprechenden Benutzeroberfläche für die Ablehnung:

Rectangle {
    id: permissionDeniedItem
    anchors.fill: parent
    color: "red"
    visible: false
    Text {
        anchors.centerIn: parent
        text: qsTr("We need your permission to access the calendar,"
            + "but permission was not granted. Please resolve.")
    }
}

Ändern von Berechtigungseigenschaften

Die Eigenschaften einer Berechtigung können auch nach dem Auslösen einer Anfrage durch den Aufruf von `request()` geändert werden. Dadurch wird der Status aktualisiert, sofern er sich aufgrund der neuen Eigenschaftswerte ändert; es erfolgt jedoch keine automatische Anfrage mit den neuen Eigenschaften.

Wenn beispielsweise eine bereits erteilte Kalenderberechtigung für den Zugriffsmodus „ Qt.CalendarPermission.ReadOnly “ auf „ Qt.CalendarPermission.ReadWrite “ erweitert wird, reagiert die Plattform auf eine von drei Arten:

  • Indem sie die erweiterte Berechtigung implizit erteilt, beispielsweise weil die Plattform nicht zwischen den beiden Zugriffsmodi unterscheidet, was zu keiner Statusänderung führt.
  • Indem der Status wieder auf „Unbestimmt“ gesetzt wird, sodass der Benutzer erneut zum Zugriff auf die nun erweiterte Berechtigung befragt werden kann.
  • Indem der Status auf „ Denied “ gesetzt wird, beispielsweise wenn Berechtigungen nach der anfänglichen Anforderung nicht erweitert werden können.

All diese Zustände sollten dann die Benutzeroberfläche der Anwendung in den entsprechenden Zustand versetzen, in dem der Benutzer über den neuen Zustand informiert wird und die Möglichkeit hat, die neue Berechtigung zu beantragen, sofern dies möglich ist, oder auf eine weniger weitreichende Berechtigung zurückzugreifen.

Interaktion zwischen Berechtigungselementen

Obwohl der Berechtigungsstatus letztlich an die zugrunde liegende Anwendung gebunden ist, meldet jedes Berechtigungselement seinen eigenen Status unabhängig von allen anderen Elementen und muss bei Bedarf separat angefordert werden.

Beispielsweise führt die Anforderung des Kalenderzugriffs für ein Element nicht zu einer Aktualisierung des Status eines anderen „ CalendarPermission “-Elements, selbst wenn diese genau dieselben Eigenschaften aufweisen.

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