寂之遥 發表於 2022-3-8 15:50:00

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

<p>Qt 调用java代码的一个示例,用于Android app的开发,需要在.pro文件中加入</p>
<p>QT += androidextras</p>
<p>Java使用JNI是为了使用C++的函数,而Qt这里使用JNI正好相反,是为了使用Java的函数</p>
<div class="cnblogs_Highlighter">
<pre class="brush:cpp;gutter:true;">#include &lt;QAndroidJniObject&gt;
#include &lt;QAndroidJniEnvironment&gt;

    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&lt;jstring&gt;());
    jint len = str.callMethod&lt;jint&gt;("length");
    qDebug() &lt;&lt; "--------------------------------------------" &lt;&lt; len;

    jint size = env-&gt;GetArrayLength(words.object&lt;jobjectArray&gt;());
    QAndroidJniObject elem;
    for(int ii=0;ii&lt;size;++ii){
      QAndroidJniObject elem = env-&gt;GetObjectArrayElement(words.object&lt;jobjectArray&gt;(), ii);
      qDebug() &lt;&lt; "--------------------------------------------" &lt;&lt; elem.toString();
    }
</pre>
</div>
<p>&nbsp;输出:</p>
<p>D libHHT_armeabi-v7a.so: -------------------------------------------- 24<br>D libHHT_armeabi-v7a.so: -------------------------------------------- "Hello"<br>D libHHT_armeabi-v7a.so: -------------------------------------------- "Qt"<br>D libHHT_armeabi-v7a.so: -------------------------------------------- "on"<br>D libHHT_armeabi-v7a.so: -------------------------------------------- "Android"<br>D libHHT_armeabi-v7a.so: -------------------------------------------- "test"</p><br><br>
来源:https://www.cnblogs.com/litandy2016/p/15980822.html
頁: [1]
查看完整版本: Qt 调用 java代码,用于Android app的开发