Qt for HarmonyOS/qtohosextras doc/Request Permission Example: Difference between revisions
No edit summary |
Drop manual breadcrumb, MediaWiki renders it automatically (QTFOROH-2307) |
||
| (One intermediate revision by the same user not shown) | |||
| Line 57: | Line 57: | ||
'''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/ | 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]] | ||
Latest revision as of 06:32, 17 September 2026
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: