마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Jni에서 java코드 호출하기

0 추천

 

 

static String getLocalText(String text,String LanguageCode)// 받아온 메시지를 언어코드에 맞게 되돌린다.

{

Log.d("Jni 도착 ","왔는가자");

return PopUlar.getInstance().Localized(text,LanguageCode);

}

 

위 메소드를 호출하고싶습니다.

 

현재 JniLink에서 

 

  //메시지를 받아서 언어코드확인하고 다시 리턴

    const char* getLocalTextJNI(const char* text,const char* LanguageCode)

    {

        JniMethodInfo t;

        if (JniHelper::getStaticMethodInfo(t, JNI_CLASS_NAME,

                                           "getLocalText",

                                           "(Ljava/lang/String;Ljava/lang/String;)V"))

{

            jstring Arg1 = t.env->NewStringUTF(text);

            jstring Arg2 = t.env->NewStringUTF(LanguageCode);

            

            jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID, Arg1, Arg2);

            t.env->DeleteLocalRef(Arg1);

            t.env->DeleteLocalRef(Arg2);

            t.env->DeleteLocalRef(t.classID);

            

            CCString *ret = new CCString(JniHelper::jstring2string(str).c_str());

            ret->autorelease();

            return ret->m_sString.c_str();

        }

        return "";

    }

처럼 써서 호출하는데 ,.. 호출이 안되요  메소드를 찾을수가없다고하는데 너무너무 답답하네요 ㅠㅠ 어떻게 하면  java 메소드를 호출할수있을까요 제가 jnilink에서 작성한 호출함수가 잘못된것인가요 ??

안드로이드로이으잉 (1,560 포인트) 님이 2013년 7월 17일 질문

1개의 답변

+1 추천
 
채택된 답변
getLocalText 의 반환값이 string이니
 
"(Ljava/lang/String;Ljava/lang/String;)V" 에서 마지막 V 를
 
 Ljava/lang/String; 로 변경하셔야 할 듯 합니다.
사악미소 (65,330 포인트) 님이 2013년 7월 17일 답변
안드로이드로이으잉님이 2013년 9월 6일 채택됨
if (JniHelper::getStaticMethodInfo(t, JNI_CLASS_NAME,
                                           "getLocalText",                                         
 "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Sring;" ))이렇게말씀이신가요 ?

헉!된다! 아 이제 이해했습니다. 괄호안에있는것들이 보내줘야할 인자들이고 밖에나와있는 v가 받아오는거군요 전 string이니까 string을 써넣었어야했군요! 아 감사합니다 정말!
...