C通过jni调用java,java中接口参数为byte[] ,C中数据为char *,如何将char *数据传递到java的byte[]中 ??
如:
.java
int javaapi(byte[] data, int datalen)
.c
int datatojava(char *data){
//这里需要调用javaapi接口 并将data传递给byte[] data, 参数如何进行处理 ???
}
C通过jni调用java,java中接口参数为byte[] ,C中数据为char *,如何将char *数据传递到java的byte[]中 ??
如:
.java
int javaapi(byte[] data, int datalen)
.c
int datatojava(char *data){
//这里需要调用javaapi接口 并将data传递给byte[] data, 参数如何进行处理 ???
}
{
jmethodID method_id;
jclass class_obj;
jbyteArray bytes;
if (!g_env)
return;
class_obj = (*g_env)->FindClass(g_env, "包名/类名");
if (class_obj == 0)
return;
method_id = (*g_env)->GetStaticMethodID(g_env, class_obj, "write", "([BI)V");
if (method_id) {
bytes = (*g_env)->NewByteArray(g_env, length);
(*g_env)->SetByteArrayRegion(g_env, bytes, 0, length, (const jbyte *)buffer);
(*g_env)->CallStaticVoidMethod(g_env, class_obj, method_id, bytes, length);
(*g_env)->ReleaseByteArrayElements(g_env, bytes, (jbyte *)buffer, 0);
}
return;
}