Qt for HarmonyOS/qtohosextras doc/Request Permission Example
< 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.