如何将数据设置为JNI并检索到java

时间:2017-02-27 06:09:35

标签: android c++ android-ndk java-native-interface

我将设置数据转换为JNI并将数据导入Java有些困难。我该怎么办?请参考此代码,因为我有什么不对,我不知道。请帮我解决这个问题。

Student.java

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("native-lib");
    }

    public static native Student getStudentAge();

    protected Student student;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        student = getStudentAge();
        Log.d("TAG_DATA", String.valueOf(student.getAge()));
    }
}


MainActivity.java

JNIEXPORT jobject JNICALL
Java_com_example_helloJni_MainActivity_getStudentAge(JNIEnv *env, jclass type) {

    jclass fStdClass = env->FindClass("com/example/helloJni/Student");
    jobject nStdClass = env->AllocObject(fStdClass);
    jmethodID methodId = env->GetMethodID(fStdClass, "setAge", "(I)V");
    env->CallObjectMethod(nStdClass, methodId, 10);

    return nStdClass;
}


本机lib.cpp

JNI DETECTED ERROR IN APPLICATION: the return type of CallObjectMethodV does not match


错误:

{{1}}

1 个答案:

答案 0 :(得分:1)

您需要使用CallVoidMethod,因为setAge返回void。