在您共享的函数中,在C
代码中,您正在使用创建对象数组NewObjectArray
。然后在for循环中,您将使用创建一个字符串NewStringUTF
并将其存储在数组的索引中SetObjectArrayElement
。到目前为止,您的对象数组仅对您的c
代码有效,对您的Java代码未知。只有当您返回它时,您的Java应用程序才能访问它。
我可以想到几种将字符串从c ++发送到java的方法,尽管它可能与您的意图不符。
将String数组传递给您的本机函数。在您的本机代码中,您可以使用访问每个元素,
GetObjectArrayElement
并使用进行更新SetObjectArrayElement
。这可能毫无意义,因为您最终不得不调用一个我认为您不想要的函数。如果您已经在Java代码中将字符串定义为字段,则可以使用
GetFieldID
和从本机访问该字符串GetObjectField
,然后可以使用对其进行更新SetObjectField
。我不知道您将如何向Java代码发出该字段已更新的信号(如果您需要的话)
编辑
您编写的更新函数旨在从Java层调用。提示是该函数的名称
Java_the_package_MainActivity_getJniString。要从本机上下文调用Java代码,您将需要对
envand的引用
obj。



