NDK:C++的char[]转为Java的byte[]返回

需求明确,直接上代码 :
在Java中声明:

public native byte[] getRandomKey();

C++中的实现:

#include <jni.h>
#include <string>
using namespace std;

extern "C"
JNIEXPORT jbyteArray JNICALL
Java_com_example_guan_stegwechat_service_VideoIntentService_getRandomKey(JNIEnv *env,
                                                                         jobject thiz) {
	char msgdata[40] = {0}; // 可以换成其他任意字符
    // 转为 byte[] 返回
    jbyteArray byteArray = env->NewByteArray(40);
    env->SetByteArrayRegion(byteArray, 0, 40, (jbyte *) msgdata);
    return byteArray;
}
点赞