/*******************************************************************
 *char*----->jstring
 *******************************************************************/
jstring c2js( const char* pat)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    jclass strClass = env->FindClass("java/lang/String");
    jmethodID ctorID = env->GetMethodID(strClass, "",
            "([BLjava/lang/String;)V");
    jbyteArray bytes = env->NewByteArray(strlen(pat));
    env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*) pat);
    jstring encoding = env->NewStringUTF("utf-8");
    return (jstring) env->NewObject(strClass, ctorID, bytes, encoding);
}
/******************************************************************
 *jstring ----->char*
 ********************************************************************/
char* js2c( jstring jstr)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    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;
}
/*****************************************************************
 *wchar_t* ----->jstring
 *******************************************************************/
jstring w2js( wchar_t* str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    size_t len = wcslen(str);
    jchar* str2 = (jchar*) malloc(sizeof(jchar) * (len + 1));
    int i;
    for (i = 0; i < len; i++)
        str2[i] = str[i];
    str2[len] = 0;
    jstring js = env->NewString(str2, len);
    free(str2);
    return js;
}

/*****************************************************************
 *XWCHAR* ----->jstring
 *******************************************************************/
jstring xw2js( XWCHAR* str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    size_t len = gg_wcslen(str);
    jchar* str2 = (jchar*) malloc(sizeof(jchar) * (len + 1));
    int i;
    for (i = 0; i < len; i++)
        str2[i] = str[i];
    str2[len] = 0;
    jstring js = env->NewString(str2, len);
    free(str2);
    return js;
}

/******************************************************************
 *jstring----->wchar_t*
 ********************************************************************/
wchar_t* js2w( jstring str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();
    int len = env->GetStringLength(str);
    wchar_t *w_buffer = new wchar_t[len];
    memset(w_buffer, 0, len + 1);
    w_buffer[len] = '\0';
    wcsncpy(w_buffer, (wchar_t *) env->GetStringChars(str, 0), len);
    env->ReleaseStringChars(str, (const unsigned short *) w_buffer);
    return w_buffer;
}

/******************************************************************
 *jstring----->XWCHAR*
 ********************************************************************/
XWCHAR* js2xw( jstring str)
{
    JNIEnv* env = AndroidRuntime::getJNIEnv();

    int len = env->GetStringLength(str);

    XWCHAR *w_buffer = new XWCHAR[len + 1];
    memset(w_buffer, 0, (len+1) * 2 );

    const jchar* tmp = env->GetStringChars(str, false);
    memcpy(w_buffer, tmp, len * 2 );

    env->ReleaseStringChars(str, tmp);

    return w_buffer;
}


char* ------------> jbyteArray

   jbyteArray RtnArr = NULL;  //下面一系列操作把btPath转成jbyteArray 返回出去
    RtnArr =env->NewByteArray(strlen(btPath));
    env->SetByteArrayRegion(RtnArr, 0, strlen(btPath), (jbyte*)btPath );



更多相关文章

  1. android -- 小功能 手势操作GestureDetector
  2. Android获取手机内存
  3. Android(安卓)通信录中的联系人操作
  4. [原]android 中如何飞行模式的几个操作
  5. 大话企业级android读书笔记(三)
  6. android native c++ thread
  7. android HttpURLConnection 连接网络 读取返回数据
  8. android延续按两次返回退出程序(完整代码)
  9. 用Javascript判断访问来源操作系统, 设备, 浏览器类型

随机推荐

  1. android studio 使用git@osc
  2. Android(安卓)MaoZhuaWeiBo Adapter List
  3. Android(安卓)项目打jar包时遇到包含本地
  4. 解决 EditText 的默认焦点问题
  5. Android(安卓)教你一步步搭建MVP+Retrofi
  6. Android(安卓)Studio增量更新方法
  7. android打开文件、保存对话框、创建新文
  8. 设置文本边框 与 边框的样式:
  9. android网络与通信(三种网络接口简述 )
  10. Android四大组件总结——BoardcastReceiv