本文接着实现《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相关推荐

  1. Android java传递int类型数组给C

    接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...

  2. Java String类型数据的字节长度

    问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校验,如果数据是纯英文,没有问题,但是如果数据 ...

  3. java string类型大小_Java String类型数据的字节长度

    问题描述: 向Oracle数据库中一varchar2(64)类型字段中插入一条String类型数据,程序使用String.length()来进行数据的长度校 验,如果数据是纯英文,没有问题,但是如果数 ...

  4. java中map转为json数据_Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回...

    Java技术-将java中Map类型数据转化为json数据并以Ajax形式返回html 1.自定义工具类(简单易用)-下面是我写的一个简单的工具类前端 package com.test.util; i ...

  5. java.lang.date_无法将java.lang.String类型的值转换为必需类型java.util.Date

    from date: to date: Trouver 这是控制器代码部分: @RequestParam(name = "d1", defaultValue = "190 ...

  6. JAVA判断各种类型数据是否为空(亲测)

    1.判断list是否为空(Map.Set同list) if(list != null && list.size() == 0){ }if(list != null && ...

  7. java string设置编码_详解Java中String类型与默认字符编码

    为什么写这个 至于为什么要写这个,主要是一句mmp一定要讲,绕了一上午,晕死 Java程序中的中文乱码问题一直是一个困扰程序员的难题,自己也不例外,早在做项目时就遇到过很多编码方式的坑,当时想填来着, ...

  8. 【Android】使用AIDL传递用户自定义类型数据--附完整示例代码

    AIDL对Java类型的支持 AIDL支持Java原始数据类型 AIDL支持String和CharSequence AIDL支持传递其他AIDL接口,但你引用的每个AIDL接口都需要一个import语 ...

  9. java中字符串的创建_【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

最新文章

  1. THREE TRACKS AT UNIVERSITY
  2. 15 张图,了解一下 TCP/IP 必知也必会的 10个要点
  3. 编程书说的“Go程序员应该让聚合类型的零值也具有意义”是在讲什么
  4. ×××保障再上层楼:侠诺×××备援实例
  5. 关于LightMapping和NavMesh烘焙的动态载入
  6. 2019春 总结作业
  7. .net c#识别图片二维码 图片处理(Img和BitMap)
  8. Angular4 - 组件
  9. Beta周王者荣耀交流协会第三次Scrum会议
  10. MES系统如何实现无纸化?(下)
  11. 使用sftp在客户端与服务器之间进行文件传输
  12. 如何成为技术大牛(华为超级技术大牛的十年经验总结)
  13. tensorflow语义分割计算mIoU时忽略某一类别
  14. 一阶的RC高低通电路和微积分电路有什么区别
  15. 【Unity】监听编辑器聚焦/激活状态OnEditorFocus
  16. 组合m3u8视频为一个文件,m3u8转换为mp4
  17. Thermal(1)——温控策略
  18. windows 编辑器terminal出现ANOMALY: meaningless REX prefix used
  19. unity动态生成预制体
  20. java后端实现文件下载

热门文章

  1. PDD面试题:new一个对象的过程中发生了什么?
  2. 通俗易懂讲解梯度下降法!
  3. 【模型评估与选择】sklearn.model_selection.KFold
  4. 一篇非常好的transformer年度总结
  5. PNAS顶刊文:情侣分手3个月前就有预兆!聊天记录还能反映分手后遗症
  6. 芝加哥大学24岁华人学霸遇害后,父母赶赴美国,妈妈发表讲话让人泪目...
  7. 机器学习中四种调参方法总结
  8. 实验室博士背着导师私发了两篇SCI,导师知道了会怎样?
  9. CVPR 2021|一个绝妙的想法:在类别不平衡的数据上施展半监督学习
  10. 985博士分享Pytorch与Tensorflow,哪个更值得你学习?