본문 바로가기

나의 플랫폼/안드로이드

[ JNI ] String Array 관리

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

[ Native -> Java ] 제가 테스트해봄

static jobjectArray get_string_arr(JNIEnv* env, jclass)

{

   char *str[5] = {"first","second","third","fourth","fifth"};

   jobjectArray joa= (jobjectArray)env->NewObjectArray(count, 

                            env->FindClass("java/lang/String"),env->NewStringUTF(""));

   if (joa == NULL) {

jniThrowRuntimeException(env, "Create New jobjectArray is Null");

return NULL;

  }

  for (int i = 0; i < 5 ; i++) 

env->SetObjectArrayElement(joa,i,env->NewStringUTF(str[i]));


return joa;

}


참조 : http://kaludin.egloos.com/2658085

빨간색 부분 같이 꼭 String형태로 바꿔줘야 에러가 발생하지 않고 잘 저장이 됩니다.


[ Java -> Native ] 참조

void MyJNIFunction(JNIEnv *env, jobject object, jobjectarray stringArray) {


    int stringCount = GetArrayLength(env, stringArray);


    for (int i=0; i<stringCount; i++) {

        jstring string = (jstring) GetObjectArrayElement(env, stringArray, i);

        const char *rawString = GetStringUTFChars(env, string, 0);

        // Don't forget to call `ReleaseStringUTFChars` when you're done.

    }

}

출처 : http://stackoverflow.com/questions/5972207/passing-string-array-from-java-to-c-with-jni


그럼 다들 오늘두 즐코딩~ㅎ