#include <QApplication> #include <QQmlApplicationEngine> #include <QQuickView> #include <QScreen> #include <QString> #include <QUrl> #include <QtQml> QString TestStr(const QString &str) { QAndroidJniObject string1 = QAndroidJniObject::fromString(str); QAndroidJniObject data = QAndroidJniObject::callStaticObjectMethod ("com/kdab/training/MyJavaClass", // class name "TestS", // method name "(Ljava/lang/String;)Ljava/lang/String;", // signature string1.object<jstring>()); return data.toString(); } int TestInt(int i) { return QAndroidJniObject::callStaticMethod<jint> ("com/kdab/training/MyJavaClass", // class name "TestI", // method name "(I)I", // signature i); } int main(int argc, char *argv[]) { QApplication app(argc, argv); QString a=NULL; int b=0; a=TestStr("ooao"); qDebug()<<"a="<<a; b=TestInt(777); qDebug()<<"b="<<b; return app.exec(); }//MyJavaClass.java in com/kdab/traning
package com.kdab.training; public class MyJavaClass { // this method will be called from C/C++ public static String TestS(String str) { return "javaTestS="+str; } public static int TestI(int n) { return n*2+1; } }ref: 在软件开发的漫漫长路上且行且吟
signature稍微有一點複雜,例子如下:
()V
,表示一個没有参數, 没有返回值的方法(I)V:
表示参數為一个int,没有返回值的方法(I)I:
表示参數為一個int,返回值為int的方法(IF)Z:
表示参數為一個int和一個float,返回值為boolean的方法- (Ljava/lang/String;)Ljava/lang/String;表示参數為一個string,返回值為string
ref: Here
沒有留言:
張貼留言