`

jstring, char* 变换函数

 
阅读更多
// jstring To char*
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;
}

// char* To jstring
jstring stringTojstring(JNIEnv* env, const char* pat)
{ 
	jclass strClass = env->FindClass("Ljava/lang/String;"); 
	jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([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); 
}
 
分享到:
评论

相关推荐

    char *转 jstring

    C++调用java java调用C++ 字符串参数传递 类型的转换

    ffmpeg编译的android可用的so文件,多个版本

    jstring string=(*env)-&gt;GetObjectArrayElement(env,cmdline,i); const char* tmp=(*env)-&gt;GetStringUTFChars(env,string,0); argv[i]=(char*)malloc(sizeof(char)*1024); strcpy(argv[i],tmp); } ffmpeg...

    JNI文档资料源码_2020_01_28_2.zip

    【Android NDK 开发】JNI 方法解析 ( 字符串数组参数传递 | 字符串遍历 | 类型强转 | Java 字符串与 C 字符串转换 | 字符串释放 ) ... 字符串转换 ( jstring -&gt; char* ) VI . 字符串释放 VII . 部分代码示例

    android jni jstring

    这是我写的android jni jstring的demo,共享一下

    Android powermanger wakelock

    static void acquireWakeLock(JNIEnv *env, jobject clazz, jint lock, jstring idObj) { ************** const char *id = env-&gt;GetStringUTFChars(idObj, NULL); acquire_wake_lock(lock, id); env-&gt;...

    jni使用string相互调用

    jni使用string相互调用 Java 传递 String 给C C 传递 jstring 给 Java

    jstring-开源

    Java 多资源包

    jni学习例子 在linux下执行成功

    jni学习例子 在linux下java调用so执行成功 java类型转成c类型 jstring 转char 相应的.so跟c跟.h跟点lib*.so都有,可以直接运行的

    错误Amr文件修复

    将错误的amr文件修复后并保存。部分代码。 /* DO NOT EDIT THIS FILE - it is machine generated */ #include ... (JNIEnv *env, jobject jot, jstring _path); #ifdef __cplusplus } #endif #endif

    android jni使用字符串

    这是我写的jni jstring的demo,共享一下。

    魔兽1.24E内置字符串转换函数 以及 查找方法

    将魔兽内的字符串类型,字符串索引以及C的char类型 相互转换,和怎样查找这些关键call!!

    open-url-in-qt-android:迷你概念证明示例,如何通过单击链接在Android上启动QT应用程序

    在Qt Android中打开网址 示例实现示例,以演示如何通过单击具有特定架构的链接( pocintent:// )来在Android上启动QT应用程序。 重要的部分是: poc.intent.OpenUrlClient扩展了QtActivity ... const char

    C++中extern "C"的用法

    主要介绍了C++中extern "C"的用法,是深入理解C++所应该掌握的概念,需要的朋友可以参考下

    Emoji表情在Android JNI中的兼容性问题详解

    最终确认这是在Android 5.1以下 jstring -&gt; char数组 时出的问题。下面通过一个示例来还原这个过程。 事件还原 假设有一个字符串s,String s = \uD83D\uDC8B; ,对应表情:kiss_mark:。通过调用getBytes()方法,会...

    JNI之Hello-JNI进阶

    2. 编写HelloJni工程,在主Activity(本例:HelloJni.java)里声明native函数: 如下: public native String stringFromJNI(); public native double add(double a, double b); public native double sub...

    Registry.dll

    修改registry的两个方法,用来解决registry不能操作中文路径的问题.一个接受jstring转换为本地字符,另一个方法接收本地字符,返回一个jstring.

    JNI接口开发

    java调用native方法流程主要有两步: 1. 找到对应的方法 a) 动态绑定时load本地库时完成映射关系,运行时...一般情况下,java调用native方法会比正常的函数调用效率低一个数量级,参数越多越复杂,对效率的影响越大。

    vertx-mod-when-1.2.0-final.zip

    jstring.zip,java本地化字符串的多资源绑定管理

    《深度理解Android:第一卷》

    《深入理解Android:卷I》是一本以情景方式对Android的源代码进行深入分析的书。...2.4.5 jstring介绍 / 27 2.4.6 JNI类型签名介绍 / 28 2.4.7 垃圾回收 / 29 2.4.8 JNI中的异常处理 / 32 2.5 本章小结 / 32

    jswoof-v1-07 当前最快的Flex解释Json的工具

    public static function decode(jstring:String):Object 可以很好地将JSon字符串转换为Flex对象,很方法JParser.encode()正好相反,其它的使用请参考JSwoof官方网站的文档:...

Global site tag (gtag.js) - Google Analytics