From ae972085a485e4db9a5313e42d559e522163cf2b Mon Sep 17 00:00:00 2001 From: Juha Vuolle Date: Tue, 23 Aug 2022 07:46:21 +0300 Subject: [PATCH] Unstringify QStandardPaths Android parts Qt 6.4 introduced new facilities to reduce the plain strings with Android methods/signatures. Fixes: QTBUG-104186 Change-Id: Id01f26aff253b096054f9fd6d062cebce94fdb50 Reviewed-by: Ivan Solovev --- src/corelib/io/qstandardpaths_android.cpp | 25 ++++++++++------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/corelib/io/qstandardpaths_android.cpp b/src/corelib/io/qstandardpaths_android.cpp index c26a5d30ce..4c5bea42ed 100644 --- a/src/corelib/io/qstandardpaths_android.cpp +++ b/src/corelib/io/qstandardpaths_android.cpp @@ -12,6 +12,9 @@ QT_BEGIN_NAMESPACE +Q_DECLARE_JNI_CLASS(Environment, "android/os/Environment"); +Q_DECLARE_JNI_TYPE(File, "Ljava/io/File;"); + using namespace QNativeInterface; using namespace Qt::StringLiterals; @@ -25,8 +28,8 @@ static QString testDir() static inline QString getAbsolutePath(const QJniObject &file) { - QJniObject path = file.callObjectMethod("getAbsolutePath", - "()Ljava/lang/String;"); + QJniObject path = file.callMethod("getAbsolutePath"); + if (!path.isValid()) return QString(); @@ -49,16 +52,13 @@ static QString getExternalFilesDir(const char *directoryField = nullptr) QJniObject dirField = QJniObject::fromString(""_L1); if (directoryField && strlen(directoryField) > 0) { - dirField = QJniObject::getStaticObjectField("android/os/Environment", - directoryField, - "Ljava/lang/String;"); + dirField = QJniObject::getStaticField(directoryField); if (!dirField.isValid()) return QString(); } - QJniObject file = appCtx.callObjectMethod("getExternalFilesDir", - "(Ljava/lang/String;)Ljava/io/File;", - dirField.object()); + QJniObject file = appCtx.callMethod("getExternalFilesDir", + dirField.object()); if (!file.isValid()) return QString(); @@ -80,8 +80,7 @@ static QString getExternalCacheDir() if (!appCtx.isValid()) return QString(); - QJniObject file = appCtx.callObjectMethod("getExternalCacheDir", - "()Ljava/io/File;"); + QJniObject file = appCtx.callMethod("getExternalCacheDir"); if (!file.isValid()) return QString(); @@ -102,8 +101,7 @@ static QString getCacheDir() if (!appCtx.isValid()) return QString(); - QJniObject file = appCtx.callObjectMethod("getCacheDir", - "()Ljava/io/File;"); + QJniObject file = appCtx.callMethod("getCacheDir"); if (!file.isValid()) return QString(); @@ -124,8 +122,7 @@ static QString getFilesDir() if (!appCtx.isValid()) return QString(); - QJniObject file = appCtx.callObjectMethod("getFilesDir", - "()Ljava/io/File;"); + QJniObject file = appCtx.callMethod("getFilesDir"); if (!file.isValid()) return QString();