Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在JNI中获取活动上下文以将其传递给java函数调用_Java_Android_C++_Mobile_Java Native Interface - Fatal编程技术网

在JNI中获取活动上下文以将其传递给java函数调用

在JNI中获取活动上下文以将其传递给java函数调用,java,android,c++,mobile,java-native-interface,Java,Android,C++,Mobile,Java Native Interface,项目信息: 我有一个Android java SDK和C++包装器项目。C++包装器是一个Android java应用程序,它加载C++库,它使用SDK的AAR,以访问和使用它提供的一些功能。JNI用于实现java函数的映射和转换,使C++函数可以调用它们。 应用程序上下文: 我知道在JNI中,您可以通过执行中描述的操作来获取应用程序上下文。实际上,我已经成功地完成了类似的工作,获取了应用程序上下文,并使用JNI将其作为Java函数中的参数传递 活动上下文: 现在,有一个SDK函数将活动上下文作

项目信息:

我有一个Android java SDK和C++包装器项目。C++包装器是一个Android java应用程序,它加载C++库,它使用SDK的AAR,以访问和使用它提供的一些功能。JNI用于实现java函数的映射和转换,使C++函数可以调用它们。 应用程序上下文:

我知道在JNI中,您可以通过执行中描述的操作来获取应用程序上下文。实际上,我已经成功地完成了类似的工作,获取了应用程序上下文,并使用JNI将其作为Java函数中的参数传递

活动上下文:

现在,有一个SDK函数将活动上下文作为参数,并使用它在UI线程上运行代码块。不幸的是,此功能无法更改

问题:


是否有任何方法可以通过JNI以类似于您在上面的链接中获取应用程序上下文的方式获取活动上下文?否则,是否有其他方法可以使用JNI获取活动上下文,以便以后将其作为参数传递给Java函数调用?

可以调用JNI方法,将“jobject”上下文作为其参数之一传递,然后您可以在该方法中多次使用该变量。JOBJECT接受任何类型的数据,所以我认为您需要进行一些类型检查

  • JNI方法:Java_com_示例_测试_方法(env,jobject上下文,jint arg1)
  • Java方法:本机方法(上下文,int arg1)
因此,从活动中,您必须调用JNI方法并将“this”传递为“jobject”。然后,如果需要特定JNI方法之外的上下文,则需要将该jobject转换为JNI GlobalRef