jni的jstring转为char指针和jni中使用logcat

  • jni的jstring转为char指针

    #include <jni.h>
    #include <stdlib.h>
    #include <android/log.h>
    #define LOG_TAG "System.out"
    #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)
    /**
     * 把一个jstring转换成一个c语言的char* 类型.
     */
    char* _JString2CStr(JNIEnv* env, jstring jstr) {
          char* rtn = NULL;
          jclass clsstring = (*env)->FindClass(env, "java/lang/String");
          jstring strencode = (*env)->NewStringUTF(env,"GB2312");
          jmethodID mid = (*env)->GetMethodID(env, clsstring, "getBytes", "(Ljava/lang/String;)[B");
          jbyteArray barr = (jbyteArray)(*env)->CallObjectMethod(env, jstr, mid, strencode); // String .getByte("GB2312");
          jsize alen = (*env)->GetArrayLength(env, barr);
          jbyte* ba = (*env)->GetByteArrayElements(env, barr, JNI_FALSE);
          if(alen > 0) {
                rtn = (char*)malloc(alen+1); //"\0"
                memcpy(rtn, ba, alen);
                rtn[alen]=0;
          }
          (*env)->ReleaseByteArrayElements(env, barr, ba,0);
          return rtn;
    }

jni的jstring转为char指针和jni中使用logcat

上一篇:手把手教你JSON解析完Cube数据,如何输出到Excel


下一篇:JS之-BOM模型-DOM模型