Jump to content

Qt for HarmonyOS/qtohosextras doc/Request Permission Example

From Qt Wiki
Revision as of 06:32, 17 September 2026 by Shawn Luo (talk | contribs) (Drop manual breadcrumb, MediaWiki renders it automatically (QTFOROH-2307))
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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: