Ниже упоминается функция, определенная в C, которую я буду вызывать из java, например, Getdevicedetails(string)
:
extern "C" JNIEXPORT jobject JNICALL Java_com_example_myapplicationforc_MainActivity_getdevicedetails(JNIEnv* env, jobject value,jstring stringfromjava)
Структура, созданная на стороне C :
struct deviceinfo
{
char manufacturer[PROP_VALUE_MAX + 1];
char model[PROP_VALUE_MAX + 1];
char brand[PROP_VALUE_MAX + 1];
char SDK[PROP_VALUE_MAX + 1];
char buildrelease[PROP_VALUE_MAX + 1];
//char serialno[PROP_VALUE_MAX + 1];
char imeino[PROP_VALUE_MAX + 1];
};
struct deviceinfo *devicedetail = (struct deviceinfo *) malloc(sizeof(deviceinfo));
После заполнения этой структуры при возврате я конвертирую это в объект java и возвращаю его вот так
return env->NewGlobalRef(jobject (devicedetail));
На javaside я получаю объект вот так:
Object jobjt = getdevicedetails(paramstring);
Но вылетает при запуске приложения. Любая подсказка, где я ошибаюсь? когда я передаю каждый член структуры в виде строки от C до java, он работает и отображается в приложении java / android. Но при возврате ссылки на объект происходит сбой. Нужна помощь.