Search code examples
qt6qtandroidextras

Requesting Android permissions in Qt 6


I am trying to convert a Qt 5 app to Qt 6. In Qt 5 we can request Android permissions as follows:

QStringList permissions;
//...
QtAndroid::PermissionResultMap resultHash = QtAndroid::requestPermissionsSync(permissions);
for (const auto &perm : permissions)
{
    if(resultHash[perm] == QtAndroid::PermissionResult::Denied)
    {
        qDebug() << "Permission denied:" << perm;
        return false;
    }
}

What is the equivalent in Qt 6? Or is the only way to manually implement this using JNI?

Regards


Solution

  • Here is the new Qt6 permission API (which is still under development, however can be used): QtAndroidPrivate Namespace

    Example:

    #include <QtCore/private/qandroidextras_p.h>
    
    bool checkPermission()
    {
        auto r = QtAndroidPrivate::checkPermission(QtAndroidPrivate::Storage).result();
        if (r == QtAndroidPrivate::Denied)
        {
            r = QtAndroidPrivate::requestPermission(QtAndroidPrivate::Storage).result();
            if (r == QtAndroidPrivate::Denied)
                return false;
        }
        return true;
    }