android - 在 jni android 中返回字节数组?

标签 android android-ndk java-native-interface

我需要从 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;

我不知道如何从 jni 返回字节数组。

有人可以帮助我吗?请!

最佳答案

在 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;
}

基于此link

关于android - 在 jni android 中返回字节数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26603285/

相关文章:

安卓软键盘隐藏分割条

android - react native : Hover image onPress

Android Studio CMake - 共享库缺少 libc++_shared.so? CMake 可以 bundle 这个吗?

android - 内置函数警告的不兼容隐式声明使用 NDK 和 LAME

java - Lotus-notes 插件中出现 UnsatisfiedLinkError

java - JNI_CreateJavaVM函数方法不起作用,无法调试

Play 商店中的 Android 应用程序(在 Firemonkey Delphi 中开发)与您的设备不兼容

java - 保存状态的 Android 问题

android ndk实践

android - 使用NDK库时是否需要在build.gradle文件中添加arm64-v8a