diff options
-rw-r--r-- | src/corelib/kernel/qjnienvironment.cpp | 7 | ||||
-rw-r--r-- | src/corelib/kernel/qjniobject.cpp | 36 | ||||
-rw-r--r-- | src/corelib/kernel/qjniobject.h | 3 |
3 files changed, 37 insertions, 9 deletions
diff --git a/src/corelib/kernel/qjnienvironment.cpp b/src/corelib/kernel/qjnienvironment.cpp index 5aee05bce6..8c1f19ce82 100644 --- a/src/corelib/kernel/qjnienvironment.cpp +++ b/src/corelib/kernel/qjnienvironment.cpp @@ -286,12 +286,7 @@ bool QJniEnvironment::registerNativeMethods(const char *className, JNINativeMeth if (!classObject.isValid()) return false; - - jclass clazz = d->jniEnv->GetObjectClass(classObject.object()); - const bool result = registerNativeMethods(clazz, methods, size); - d->jniEnv->DeleteLocalRef(clazz); - - return result; + return registerNativeMethods(classObject.objectClass(), methods, size); } /*! diff --git a/src/corelib/kernel/qjniobject.cpp b/src/corelib/kernel/qjniobject.cpp index c443746ff4..dfb0dbd36d 100644 --- a/src/corelib/kernel/qjniobject.cpp +++ b/src/corelib/kernel/qjniobject.cpp @@ -779,10 +779,10 @@ QJniObject::~QJniObject() jstring jstring = string.object<jstring>(); \endcode - \note The returned object is still kept live by this QJniObject. To keep the - object live beyond the lifetime of this QJniObject, for example to record it + \note The returned object is still kept alive by this QJniObject. To keep the + object alive beyond the lifetime of this QJniObject, for example to record it for later use, the easiest approach is to store it in another QJniObject with - a suitable lifetime. Alternatively, you can make a new global reference to the + a suitable lifetime. Alternatively, you may create a new global reference to the object and store it, taking care to free it when you are done with it. \snippet jni/src_qjniobject.cpp QJniObject scope @@ -792,6 +792,36 @@ jobject QJniObject::object() const return javaObject(); } +/*! + \fn jclass QJniObject::objectClass() const + + Returns the class object held by the QJniObject as a \c jclass. + + \note The returned object is still kept alive by this QJniObject. To keep the + object alive beyond the lifetime of this QJniObject, for example to record it + for later use, the easiest approach is to store it in another QJniObject with + a suitable lifetime. Alternatively, you may create a new global reference to the + object and store it, taking care to free it when you are done with it. + + \since 6.2 +*/ +jclass QJniObject::objectClass() const +{ + return d->m_jclass; +} + +/*! + \fn QByteArray QJniObject::className() const + + Returns the name of the class object held by the QJniObject as a \c QByteArray. + + \since 6.2 +*/ +QByteArray QJniObject::className() const +{ + return d->m_className; +} + QJniObject QJniObject::callObjectMethodV(const char *methodName, const char *signature, va_list args) const diff --git a/src/corelib/kernel/qjniobject.h b/src/corelib/kernel/qjniobject.h index e7bf4f3007..d9e11c4934 100644 --- a/src/corelib/kernel/qjniobject.h +++ b/src/corelib/kernel/qjniobject.h @@ -68,6 +68,9 @@ public: return static_cast<T>(javaObject()); } + jclass objectClass() const; + QByteArray className() const; + template <typename T> T callMethod(const char *methodName, const char *signature, ...) const { |