Jump to content

Qt for HarmonyOS/qtohosextras doc/Request Permission Example: Difference between revisions

From Qt Wiki
No edit summary
Publish example source listings and restore Files lists (QTFOROH-2307)
Line 1: Line 1:
< [[Qt_for_HarmonyOS/qtohosextras_doc|Qt for HarmonyOS / qtohosextras doc]]
= Request Permission Example =
= Request Permission Example =


Line 57: Line 59:
'''Note: '''getInstanceForMainWindow() requires a valid [https://doc.qt.io/qt-5/qwindow.html QWindow], so the window must be shown before the context is requested.
'''Note: '''getInstanceForMainWindow() requires a valid [https://doc.qt.io/qt-5/qwindow.html QWindow], so the window must be shown before the context is requested.


* [[Qt_for_HarmonyOS/qtohosextras_doc/Request_Permission_Example|abilitycontext/requestpermission/requestpermission.pro]]
Files:
 
* [[Qt_for_HarmonyOS/qtohosextras_doc/Request_Permission_Example_-_main.cpp|abilitycontext/requestpermission/main.cpp]]
* [[Qt_for_HarmonyOS/qtohosextras_doc/Request_Permission_Example_-_requestpermission.pro|abilitycontext/requestpermission/requestpermission.pro]]


[[Category:Qt for HarmonyOS]]
[[Category:Qt for HarmonyOS]]

Revision as of 02:45, 17 September 2026

< Qt for HarmonyOS / qtohosextras doc

Request Permission Example

Demonstrates requesting application permissions from the user, per main window, by enum and by name.


A launcher button opens a new main window with one row per supported permission. In each row, one button requests the permission through the QOhosAbilityContext::requestPermissionFromUserIfNeeded() enum overload and the other through the string overload with the full OHOS permission name, for example ohos.permission.READ_PASTEBOARD. The per-window context is obtained with QOhosAbilityContext::getInstanceForMainWindow() after the window has been shown. Results arrive through the permissionRequestResponseReceived() and namedPermissionRequestResponseReceived() signals and are displayed with the permissionGranted and dialogShown flags of AppPermissions::PermissionResult.

Requesting a permission through the enum overload:

                 [window, supportedPermission]() {
                     auto abilityContext = tryGetAbilityContext(window);
                     if (abilityContext != nullptr) {
                         abilityContext->requestPermissionFromUserIfNeeded(
                             supportedPermission.permission);
                     }
                 }));

Requesting a permission by its full OHOS name:

                 [window, supportedPermission]() {
                     auto abilityContext = tryGetAbilityContext(window);
                     if (abilityContext != nullptr) {
                         abilityContext->requestPermissionFromUserIfNeeded(
                             supportedPermission.namedPermission);
                     }
                 }));

Receiving the asynchronous response for enum based requests:

                 auto abilityContext = QtOhosExtras::QOhosAbilityContext::getInstanceForMainWindow(newWindow->windowHandle());
                 QObject::connect(
                     abilityContext.data(),
                     &QtOhosExtras::QOhosAbilityContext::permissionRequestResponseReceived,
                     newWindow,
                     [newWindow](
                         QtOhosExtras::AppPermissions::Permission permission,
                         QtOhosExtras::AppPermissions::PermissionResult result) {
                         showAppPermissionResponseDialog(
                             newWindow, QLatin1String("Enum based"),
                             readableNameForPermission(permission),
                             result);
                     });

Note: getInstanceForMainWindow() requires a valid QWindow, so the window must be shown before the context is requested.

Files: