如何从本机函数返回QAndroidJniObject?

时间:2015-10-29 11:25:13

标签: java android c++ qt java-native-interface

我正在尝试从本机函数返回QAndroidJniObject。使用Qt 5.5和QtAndroidExtras。 这是我的第一个天真实施:

QAndroidJniObject doSomething() {
  return QAndroidJniObject("android/os/Bundle", "()V");
}

static jobject nativeFunc(JNIEnv *env, jclass, jlong nativePointer, int, jstring, jstring, jstring)
{
  QAndroidJniObject obj = doSomething();                                       
  return obj.object();
}

不幸的是,我收到了一个错误:

I/dalvikvm(32413): JNI ERROR (app bug): accessed deleted global reference 0x1de00462

QAndroidJniObject被销毁时,底层的java对象也会被销毁。似乎QAndroidJniObject没有detach()方法或其他内容。

1 个答案:

答案 0 :(得分:0)

通过创建新的local reference

解决了这个问题
return env->NewLocalRef(obj.object<jobject>());