how to convert jobject to jstring
13,428
Here you go ...
const char* GetIDJni() {
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "GetIDJni", "()Ljava/lang/String;")) {
jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
CCString *ret = new CCString(JniHelper::jstring2string(str).c_str());
ret->autorelease();
t.env->DeleteLocalRef(str);
return ret->m_sString.c_str();
}
return 0;
}
And if you want to get it return as std::String then
std::string GetIDJni() {
std::string ret;
JniMethodInfo t;
if (JniHelper::getStaticMethodInfo(t, CLASS_NAME, "GetIDJni", "()Ljava/lang/String;")) {
jstring str = (jstring)t.env->CallStaticObjectMethod(t.classID, t.methodID);
t.env->DeleteLocalRef(t.classID);
ret=JniHelper::jstring2string(str);
t.env->DeleteLocalRef(str);
return ret;
}
return 0;
}
Author by
glo
Updated on June 04, 2022Comments
-
glo almost 2 years
I am trying to get a string in return to a function call from cpp to java.
This is my JNI call
string GetIDJni() { cocos2d::JniMethodInfo methodInfo; if (! JniHelper::getStaticMethodInfo(methodInfo, CLASS_NAME, "GetID", "()Ljava/lang/String")) { return ""; } jobject retObj = methodInfo.env->CallStaticObjectMethod(methodInfo.classID, methodInfo.methodID); jstring retStr = (jstring)retObj; methodInfo.env->DeleteLocalRef(methodInfo.classID); return (JniHelper::jstring2string(retStr)); }
On compiling i get the error
error: invalid conversion from '_jobject*' to '_jstring*'
Can anyone please tell me how to solve this problem.