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; }
可參考以下連接中代碼,未驗證函數