008android初级篇之jni中数组的传递java
下面举一个例子android
java实现函数c++
public native boolean changeAccountPasswd(byte[] passwd,int len);
Native 层的实现数组
JNIEXPORT jboolean JNICALL Java_com_frank_smart_smarthome_JniSocket_changeAccountPasswd (JNIEnv *env, jobject object,jbyteArray passwd,jint len) { jbyte *bytes; unsigned char *buf; int i; //从jbytearray获取数据到jbyte* bytes = env->GetByteArrayElements(passwd,NULL); if(bytes == NULL) { return false; } buf =(unsigned char *)calloc(len,sizeof(char)); if(buf == NULL) { return false; } for(i=0;i<len;i++) { *(buf+i)=(unsigned char)(*(bytes+i)); } //释放资源 env->ReleaseByteArrayElements(passwd,bytes,0); __android_log_write(ANDROID_LOG_ERROR,"TAG",(char*)buf); free(buf); return true; }
可参考以下连接中代码,未验证函数