diff options
author | Christian Strømme <christian.stromme@digia.com> | 2014-04-23 16:22:04 +0200 |
---|---|---|
committer | Christian Stromme <christian.stromme@digia.com> | 2014-07-14 02:24:57 +0200 |
commit | 1220a87f8adfcc30cd31a2b1a5bccbee8c394cec (patch) | |
tree | fbb5607dd9de6be2c19b2f2c1bcfeb3c8e436198 /src/plugins/platforms/android/qandroidplatformservices.cpp | |
parent | c4b1fffb22e8b20ffe51c5367cdf49eaeada9546 (diff) |
Android: Simplify the jni code in QAndroidPlatformServices
Remove the use of QtAndroid::AttachedJNIEnv and lazily cache
the openURL() methodID on first use.
Change-Id: I601d13bc7d644d7cb2f78655ad40c7d9566cf3cb
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
Diffstat (limited to 'src/plugins/platforms/android/qandroidplatformservices.cpp')
-rw-r--r-- | src/plugins/platforms/android/qandroidplatformservices.cpp | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/plugins/platforms/android/qandroidplatformservices.cpp b/src/plugins/platforms/android/qandroidplatformservices.cpp index 02fe29e576..9c21abe39b 100644 --- a/src/plugins/platforms/android/qandroidplatformservices.cpp +++ b/src/plugins/platforms/android/qandroidplatformservices.cpp @@ -43,30 +43,21 @@ #include <QUrl> #include <QDir> #include <QDebug> +#include <QtCore/private/qjni_p.h> QT_BEGIN_NAMESPACE QAndroidPlatformServices::QAndroidPlatformServices() { - QtAndroid::AttachedJNIEnv env; - if (!env.jniEnv) - return; - - m_openURIMethodID = env.jniEnv->GetStaticMethodID(QtAndroid::applicationClass(), - "openURL", - "(Ljava/lang/String;)V"); } bool QAndroidPlatformServices::openUrl(const QUrl &url) { - QtAndroid::AttachedJNIEnv env; - if (!env.jniEnv) - return false; - - jstring string = env.jniEnv->NewString(reinterpret_cast<const jchar *>(url.toString().constData()), - url.toString().length()); - env.jniEnv->CallStaticVoidMethod(QtAndroid::applicationClass(), m_openURIMethodID, string); - env.jniEnv->DeleteLocalRef(string); + QJNIObjectPrivate urlString = QJNIObjectPrivate::fromString(url.toString()); + QJNIObjectPrivate::callStaticMethod<void>(QtAndroid::applicationClass(), + "openURL", + "(Ljava/lang/String;)V", + urlString.object()); return true; } |