Qt 調用java代碼的一個示例,用於Android app的開發,需要在.pro文件中加入
QT += androidextras
Java使用JNI是為了使用C++的函數,而Qt這里使用JNI正好相反,是為了使用Java的函數
#include <QAndroidJniObject>
#include <QAndroidJniEnvironment>
QAndroidJniEnvironment env;
QAndroidJniObject str = QAndroidJniObject::fromString("Hello Qt on Android test");
QAndroidJniObject separator = QAndroidJniObject::fromString(" ");
QAndroidJniObject words = str.callObjectMethod("split",
"(Ljava/lang/String;)[Ljava/lang/String;",
separator.object<jstring>());
jint len = str.callMethod<jint>("length");
qDebug() << "--------------------------------------------" << len;
jint size = env->GetArrayLength(words.object<jobjectArray>());
QAndroidJniObject elem;
for(int ii=0;ii<size;++ii){
QAndroidJniObject elem = env->GetObjectArrayElement(words.object<jobjectArray>(), ii);
qDebug() << "--------------------------------------------" << elem.toString();
}
輸出:
D libHHT_armeabi-v7a.so: -------------------------------------------- 24
D libHHT_armeabi-v7a.so: -------------------------------------------- "Hello"
D libHHT_armeabi-v7a.so: -------------------------------------------- "Qt"
D libHHT_armeabi-v7a.so: -------------------------------------------- "on"
D libHHT_armeabi-v7a.so: -------------------------------------------- "Android"
D libHHT_armeabi-v7a.so: -------------------------------------------- "test"
