Qt on Android c++与Java互相交互

来源:互联网 发布:mac maven 使用教程 编辑:程序博客网 时间:2024/06/07 06:48

这里做个例子,已经实现了他们互相交互,这里例子是整形和字符型。

可以先看一下我写的java简单案例(为了方便演示都做成静态了):

package com.demo.cppandjava;
public class democppandjava
{
    private static int tmpNum = 1;
    private static String tmpStr = "123";
    public static void setInt(int num) {
        tmpNum = num;
    }
    public static int getInt() {
        return tmpNum;
    }
    public static void setString(String str) {
        tmpStr = str;
    }
    public static String getString() {
        return tmpStr;
    }
}

来看一下对应互相交互函数:    //Cpp与java交互

void MainWindow::cppAssignmentJavaInt(int num)
{
#ifdef Q_OS_ANDROID
    QAndroidJniObject::callStaticMethod<void>(
                "com/demo/cppandjava/democppandjava",
                "setInt",
                "(I)V",
                num);
#endif
}
int MainWindow::cppUseJavaToInt()
{
#ifdef Q_OS_ANDROID
    return QAndroidJniObject::callStaticMethod<jint>("com/demo/cppandjava/democppandjava", "getInt");
#endif
}
void MainWindow::cppAssignmentJavaString(QString str)
{
#ifdef Q_OS_ANDROID
    QAndroidJniObject strTMP = QAndroidJniObject::fromString(str);
    QAndroidJniObject::callStaticMethod<void>(
                "com/demo/cppandjava/democppandjava",
                "setString",
                "(Ljava/lang/String;)V",
                strTMP.object<jstring>());
#endif
}
QString MainWindow::cppUseJavaToString()
{
#ifdef Q_OS_ANDROID
    QAndroidJniObject str = QAndroidJniObject::callStaticObjectMethod("com/demo/cppandjava/democppandjava",
                                                     "getString",
                                                     "()Ljava/lang/String;");
    return str.toString();
#endif
}


整型是简单的,字符型稍稍要绕一下。要注意"()Ljava/lang/String;"这里有个分号哦!~


我已经把代码上传到CSDN:http://download.csdn.net/detail/u014597198/9816271

0 0
原创粉丝点击