查看: 116|回覆: 0

Qt 调用 java代码,用于Android app的开发

[複製鏈接]

0

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2009-7-10
發表於 2022-3-8 15:50:00 | 顯示全部樓層 |閲讀模式

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"



来源:https://www.cnblogs.com/litandy2016/p/15980822.html
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部