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

Android 在JNI中,从jobjectArray设置和获取元素,android,java-native-interface,Android,Java Native Interface,最后一行给出了一个错误致命错误 这里的输出是char*,结果是jobjectArray 我只需要添加字符串、整数、浮点等。。。返回jobjectArray并返回jobjectArray 当我添加jstring时,他们的没有错误,但对于其他原语类型,它的抛出错误 您不能像在Java中那样对jobject施放jint。C不知道如何提升该数据类型。您需要在JNI中找到java.lang.Integer类,并使用jint参数构造它,以获得整数jobject 下面是一些代码,请返回并查看文档,并执行所需的

最后一行给出了一个错误致命错误

这里的
输出
char*
结果
jobjectArray

我只需要添加字符串、整数、浮点等。。。返回jobjectArray并返回jobjectArray


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

您不能像在Java中那样对jobject施放jint。C不知道如何提升该数据类型。您需要在JNI中找到java.lang.Integer类,并使用jint参数构造它,以获得整数jobject

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

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);
jclass Integer\u class=(*env)->FindClass(env,“java/lang/Integer”);
jmethodID=Integer_init=(*env)->GetMethodID(
环境,
整数类,
"",
“(I)V”);
整型对象=(*env)->NewObject(
环境,
整数类,
整数_init,
位(单位计数);
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);