diff --git a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java index 0ae4c2e731a..2d5aff1e8d8 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtActivityBase.java @@ -337,7 +337,7 @@ public class QtActivityBase extends Activity @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { - QtNative.sendRequestPermissionsResult(requestCode, permissions, grantResults); + QtNative.sendRequestPermissionsResult(requestCode, grantResults); } @UsedFromNativeCode diff --git a/src/android/jar/src/org/qtproject/qt/android/QtNative.java b/src/android/jar/src/org/qtproject/qt/android/QtNative.java index ecb6502918e..c1b31e00bbe 100644 --- a/src/android/jar/src/org/qtproject/qt/android/QtNative.java +++ b/src/android/jar/src/org/qtproject/qt/android/QtNative.java @@ -462,7 +462,7 @@ public class QtNative static native void runPendingCppRunnables(); - static native void sendRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults); + static native void sendRequestPermissionsResult(int requestCode, int[] grantResults); // activity methods // service methods diff --git a/src/corelib/platform/android/qandroidextras.cpp b/src/corelib/platform/android/qandroidextras.cpp index e5d91422a26..d8d47ebdb0e 100644 --- a/src/corelib/platform/android/qandroidextras.cpp +++ b/src/corelib/platform/android/qandroidextras.cpp @@ -1051,15 +1051,14 @@ static int nextRequestCode() \internal This function is called when the result of the permission request is available. - Once a permission is requested, the result is braodcast by the OS and listened + Once a permission is requested, the result is broadcast by the OS and listened to by QtActivity which passes it to C++ through a native JNI method call. */ -static void sendRequestPermissionsResult(JNIEnv *env, jobject obj, jint requestCode, - const QStringList &permissions, const QList &grantResults) +static void sendRequestPermissionsResult(JNIEnv *env, jclass obj, jint requestCode, + const QJniArray &grantResults) { Q_UNUSED(env); Q_UNUSED(obj); - Q_UNUSED(permissions); QMutexLocker locker(&g_pendingPermissionRequestsMutex); auto it = g_pendingPermissionRequests->constFind(requestCode); @@ -1072,8 +1071,13 @@ static void sendRequestPermissionsResult(JNIEnv *env, jobject obj, jint requestC g_pendingPermissionRequests->erase(it); locker.unlock(); - for (qsizetype i = 0; i < grantResults.size(); ++i) - request->addResult(resultFromAndroid(grantResults.at(i)), i); + request->addResults([grantResults](){ + QList results(grantResults.size(), + Qt::Uninitialized); + for (qsizetype i = 0; i < grantResults.size(); ++i) + results[i] = resultFromAndroid(grantResults.at(i)); + return results; + }()); QtAndroidPrivate::releaseAndroidDeadlockProtector(); request->finish();