Я сейчас портирую код Gingerbread на ICS. Связь между C и Java происходит правильно в Gingerbread. Но то же самое происходит сбой в ICS. Не в состоянии разобраться.
Какие основные изменения в ICS jni.?
Моя текущая проблема,
1.Получить экземпляр класса, преобразовать его в глобальную ссылку и сохранить.
jclass myWrapperClass = (*env)->FindClass(env,"com/test/mypackage/Wrapper");
if (voipWrapperClass == NULL) {
// error - handling and returns
}
WrapperClass = (jclass)(*env)->NewGlobalRef(env,myWrapperClass);
2. При вызове JNI поток переходит в нижний стек и возвращает обратный вызов в jni. Из JNI в Java вызов функции ниже
void response(void* ptr, int result){
JNIEnv *envPtr= NULL;
JavaVM* vmPtr= p_pdb->vm;
if ((*vmPtr)->GetEnv(vmPtr,(void**) &envPtr, JNI_VERSION_1_4) == JNI_EDETACHED) {
(*vmPtr)->AttachCurrentThread(vmPtr,(void**)&envPtr,NULL);
}
if (ptr->WrapperClass == NULL) {
// error- handling and return
}
RespMethodId = (*envPtr)->GetMethodID(envPtr,ptr->WrapperClass, "resp","(Z)V");
// this method is always 0 ... prev for gingerbread it returned a valid id..
}
Пожалуйста, дайте мне решение, как действовать дальше .?