#include <string.h>
using namespace std;
#include <DDLog.h>
static jstring StringtoJstring(JNIEnv* env, const char* pat)
{
jclass strClass = env->FindClass("java/lang/String");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray((jsize)strlen(pat));
env->SetByteArrayRegion(bytes, 0, (jsize)strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}
static char* JstringToString(JNIEnv* env, jstring jstr)
{
char* rtn = NULL;
jclass clsstring = (*env).FindClass("java/lang/String");
jstring strencode = (*env).NewStringUTF("utf-8");
jmethodID mid = (*env).GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr= (jbyteArray)(*env).CallObjectMethod(jstr, mid, strencode);
jsize alen = (*env).GetArrayLength(barr);
jbyte* ba = (*env).GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0)
{
rtn = (char*)malloc(alen + 1);
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
(*env).ReleaseByteArrayElements(barr, ba, 0);
return rtn;
}
using namespace std;
#include <DDLog.h>
static jstring StringtoJstring(JNIEnv* env, const char* pat)
{
jclass strClass = env->FindClass("java/lang/String");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray((jsize)strlen(pat));
env->SetByteArrayRegion(bytes, 0, (jsize)strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}
static char* JstringToString(JNIEnv* env, jstring jstr)
{
char* rtn = NULL;
jclass clsstring = (*env).FindClass("java/lang/String");
jstring strencode = (*env).NewStringUTF("utf-8");
jmethodID mid = (*env).GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B");
jbyteArray barr= (jbyteArray)(*env).CallObjectMethod(jstr, mid, strencode);
jsize alen = (*env).GetArrayLength(barr);
jbyte* ba = (*env).GetByteArrayElements(barr, JNI_FALSE);
if (alen > 0)
{
rtn = (char*)malloc(alen + 1);
memcpy(rtn, ba, alen);
rtn[alen] = 0;
}
(*env).ReleaseByteArrayElements(barr, ba, 0);
return rtn;
}