Android java传递string类型数据给C
本文接着实现《Android java传递int类型数据给C》的还未实现的方法:
public native String sayHelloInC(String s);
先贴一个工具方法,具体意义后面的文章将介绍
/*** 把一个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; }
接着完成sayHelloInC函数
/** Class: com_wuyudong_javapassdata_JNI* Method: sayHelloInC* Signature: (Ljava/lang/String;)Ljava/lang/String;*/JNIEXPORT jstring JNICALL Java_com_wuyudong_javapassdata_JNI_sayHelloInC(JNIEnv * env, jobject clazz, jstring jstr) {//调用工具方法把java中的string类型转换成C语言中的char×char* cstr = _JString2CStr(env, jstr);int len = strlen(cstr);int i;for (i = 0; i < len; i++) {*(cstr + i) += 1;}return (*env)->NewStringUTF(env, cstr);}
MainActivity.java中添加下面代码:
public void passString(View v) {Toast.makeText(getApplicationContext(), jni.sayHelloInC("hello yudong"), 0).show();}
搞定,运行项目
获取更多C相关知识,关注公众号:“csuanfa”
Android java传递string类型数据给C相关推荐
- Android java传递int类型数组给C
接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...
- Java String类型数据的字节长度
问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据 ...
- java string类型大小_Java String类型数据的字节长度
问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校 验,如果数据是纯英文,没有问题,但是如果数 ...
- java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...
Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...
- java.lang.date_无法将java.lang.String类型的值转换为必需类型java.util.Date
from date: to date: Trouver 这是控制器代码部分: @RequestParam(name = "d1", defaultValue = "190 ...
- JAVA判断各种类型数据是否为空(亲测)
1.判断list是否为空(Map.Set同list) if(list != null && list.size() == 0){ }if(list != null && ...
- java string设置编码_详解Java中String类型与默认字符编码
为什么写这个 至于为什么要写这个,主要是一句mmp一定要讲,绕了一上午,晕死 Java程序中的中文乱码问题一直是一个困扰程序员的难题,自己也不例外,早在做项目时就遇到过很多编码方式的坑,当时想填来着, ...
- 【Android】使用AIDL传递用户自定义类型数据--附完整示例代码
AIDL对Java类型的支持 AIDL支持Java原始数据类型 AIDL支持String和CharSequence AIDL支持传递其他AIDL接口,但你引用的每个AIDL接口都需要一个import语 ...
- java中字符串的创建_【转载】 Java中String类型的两种创建方式
本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...
最新文章
- THREE TRACKS AT UNIVERSITY
- 15 张图,了解一下 TCP/IP 必知也必会的 10个要点
- 编程书说的“Go程序员应该让聚合类型的零值也具有意义”是在讲什么
- ×××保障再上层楼:侠诺×××备援实例
- 关于LightMapping和NavMesh烘焙的动态载入
- 2019春 总结作业
- .net c#识别图片二维码 图片处理(Img和BitMap)
- Angular4 - 组件
- Beta周王者荣耀交流协会第三次Scrum会议
- MES系统如何实现无纸化?(下)
- 使用sftp在客户端与服务器之间进行文件传输
- 如何成为技术大牛(华为超级技术大牛的十年经验总结)
- tensorflow语义分割计算mIoU时忽略某一类别
- 一阶的RC高低通电路和微积分电路有什么区别
- 【Unity】监听编辑器聚焦/激活状态OnEditorFocus
- 组合m3u8视频为一个文件,m3u8转换为mp4
- Thermal(1)——温控策略
- windows 编辑器terminal出现ANOMALY: meaningless REX prefix used
- unity动态生成预制体
- java后端实现文件下载
热门文章
- PDD面试题:new一个对象的过程中发生了什么?
- 通俗易懂讲解梯度下降法!
- 【模型评估与选择】sklearn.model_selection.KFold
- 一篇非常好的transformer年度总结
- PNAS顶刊文:情侣分手3个月前就有预兆!聊天记录还能反映分手后遗症
- 芝加哥大学24岁华人学霸遇害后,父母赶赴美国,妈妈发表讲话让人泪目...
- 机器学习中四种调参方法总结
- 实验室博士背着导师私发了两篇SCI,导师知道了会怎样?
- CVPR 2021|一个绝妙的想法:在类别不平衡的数据上施展半监督学习
- 985博士分享Pytorch与Tensorflow,哪个更值得你学习?