首页 > Web开发 > 详细

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

时间:2021-06-04 22:30:39      阅读:22      评论:0      收藏:0      [点我收藏+]
  • 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

原文:https://www.cnblogs.com/xiaobai-baibaoxiang/p/14850978.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!