У меня возникла проблема при вызове обратного вызова из нативной библиотеки в Java. Обратный вызов вызывается в Java, но из вызываемой функции Java я не могу запустить свою деятельность. Новый вызов Intent возвращает NULL. В чем проблема с моим кодом?
Ниже указана моя собственная функция обратного вызова (C Код)
static jclass native_class_ID;
static jobject native_object_ID;
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *jni_vm, void *reserved){
JNIEnv* env = NULL;
if ((*jni_vm)->GetEnv(jni_vm,(void**)&env, JNI_VERSION_1_6) != JNI_OK) {
return JNI_ERR;
}
jclass temp = (*env)->FindClass(env, "com/example/test/Native_Callback");
jmethodID ctor = (*env)->GetMethodID(env, temp, "<init>", "()V");
jobject myo = (*env)->NewObject(env, temp, ctor);
native_class_ID = (jclass)(*env)->NewGlobalRef(env,temp);
if (native_class_ID == NULL){
return JNI_ERR;
}
native_object_ID = (jobject)(*env)->NewGlobalRef(env,myo);
if (native_object_ID == NULL){
return JNI_ERR;
}
(*env)->DeleteLocalRef (env, temp);
(*env)->DeleteLocalRef (env, myo);
return JNI_VERSION_1_6;
}
//Below is the function called when an event occurs in native library
{
methodID = (*pEnv)->GetMethodID(pEnv, native_class_ID , "notify_action_complete", "()V")
(*pEnv)->CallVoidMethod(pEnv, native_object_ID , methodID, NULL);
}
Ниже указан мой Java Код
public class Native_Callback extends AppCompatActivity{
.
.
.
public void notify_action_complete() {
Intent intent = new Intent(this, VideoPlayback.class);
startActivity(intent);
}
.
.
.
}
Notify_action_complete был успешно вызван, когда в Native Side происходит определенное событие, но почему моя активность не начинается? Я новичок в java, пожалуйста, помогите мне с этим
ПРИМЕЧАНИЕ: ClassID / ObjectID хранился на собственной стороне во время JNI_Onload ()
Мое требование - начать Активность VideoPlayback при получении notify_action_complete (). В то время, когда обратный вызов был получен, мое приложение работает с операцией wait_screen.