在JNI中,设置和获取jobjectArray中的元素

时间:2014-06-26 06:59:32

标签: android java-native-interface

jstring ret_str = (*env)->NewStringUTF(env, output);
(*env)->SetObjectArrayElement(env,result,1,ret_str);

jint bit_count = 5;
(*env)->SetObjectArrayElement(env,result,0,(jobject)bit_count);

最后一行给出错误致命错误。

此处outputchar*resultjobjectArray

我只需要为jobjectArray添加字符串,整数,浮点数等等,并希望返回jobjectArray。

当我添加jstring时,他们没有错误,但对于其他原始类型,它的抛出错误。

1 个答案:

答案 0 :(得分:0)

你不能像在Java中那样将jint转换为jobject。 C不知道如何推广该数据类型。您需要在JNI中找到java.lang.Integer类,并使用jint参数构造它以获取Integer jobject。

以下是一些代码,请返回并查看文档并执行所需的错误检查。

jclass Integer_class = (*env)->FindClass(env, "java/lang/Integer");
jmethodID = Integer_init = (*env)->GetMethodID(
                env,
                Integer_class,
                "<init>",
                "(I)V");
Integer_object = (*env)->NewObject(
                env,
                Integer_class,
                Integer_init,
                bit_count);