#android #java-native-interface
#Android #java-native-интерфейс
Вопрос:
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);
Последняя строка выдает ошибку FATAL ERROR.
Вот output
так char*
и result
есть jobjectArray
.
Все, что мне нужно, это добавить строки, целые числа, числа с плавающей запятой и т. Д. В jobjectArray и захотеть вернуть jobjectArray.
Когда я добавляю jstring, у них нет ошибки, но для другого примитивного типа возникает ошибка.
Ответ №1:
Вы не можете привести jint к jobject, как в Java. C понятия не имеет, как продвигать этот тип данных. Вам нужно будет найти java.lang.Целочисленный класс в JNI и создайте его с помощью аргумента jint, чтобы получить целочисленный 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);