在jni android中返回字节数组?

Dun*_*ang 10 java-native-interface android android-ndk

我需要从jni到Java获取字节数组.例如:我有一个字节数组byte [] a = {1,2,3,4,5,6}

JNIEXPORT jbyteArray JNICALL Java_com_vn_getArray (JNIEnv *env, jobject obj) {
  jbyte[] a = {1,2,3,4,5,6};
  return a;
Run Code Online (Sandbox Code Playgroud)

}

我不知道如何从jni返回一个字节数组.

有人能帮我吗?请!

The*_*vil 25

在Java中,数组是一个对象.因此,要将C或C++中的字节数组传递给java,您需要实例化一个jbyteArray,然后返回它.而不是C数组.要解决此问题,请参阅以下代码:

JNIEXPORT jbyteArray JNICALL Java_Test_returnArray
  (JNIEnv *env, jobject This)
{
        jbyte a[] = {1,2,3,4,5,6};
        jbyteArray ret = env->NewByteArray(6);
        env->SetByteArrayRegion (ret, 0, 6, a);
        return ret;
}
Run Code Online (Sandbox Code Playgroud)

基于此链接