JNI字符串操作

字符串是引用数据类型,不属于基本数据类型

Java 使用unicode编码,C使用UTF-8,所以在操作中

C语言的字符串操作在头文件中

示例代码

public native String sayHello(String string);

public native String subStr(String string);

public native String stringFromJNI();

JNIEXPORT jstring JNICALL

Java_org_professor_jni_MainActivity_sayHello(JNIEnv *env, jobject instance, jstring string_) {

//函数内部会分配内存空间

//JNI_FALSE 代表不拷贝jstring对象的字符串序列

//JNI_TRUE 代表拷贝jstring对象的字符串序列

const char *string = (*env)->GetStringUTFChars(env, string_, JNI_FALSE); //0代表JNI_FALSE

char buff[100] = {"I am from C \n"};

strcpy(buff, string_);

//释放函数内部内存空间

(*env)->ReleaseStringUTFChars(env, string_, string);

return (*env)->NewStringUTF(env, buff);

}

JNIEXPORT jstring JNICALL

Java_org_professor_jni_MainActivity_subStr(JNIEnv *env, jobject instance, jstring string_) {

// const char *string = (*env)->GetStringUTFChars(env, string_, 0);

//获取字符串长度

int strLength = (*env)->GetStringUTFLength(env, string_);

char buffer[strLength];

//截取字符串长度 内存没有分配,不用调用ReleaseStringUTFChars

(*env)->GetStringUTFRegion(env, string_, 5, strLength - 5, buffer);

strcpy(buffer, "\n");

// (*env)->ReleaseStringUTFChars(env, string_, string);

return (*env)->NewStringUTF(env, buffer);

}

JNIEXPORT jstring JNICALL

Java_org_professor_jni_MainActivity_stringFromJNI(JNIEnv *env, jobject instance) {

return (*env)->NewStringUTF(env, "I am form c");

}

android 字符串函数,Android JNI开发系列(六)字符串操作相关推荐

  1. Android Studio 下安卓 jni 开发错误 undefined reference to AndroidBitmap_getInfo

    博客: 安卓之家 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917 又掉坑里了 今天开发 uvc,又遇到了坑: 和之前的这个坑类似:Android Studio 下安卓 jni 开发错误 ...

  2. Android Studio1.4.x JNI开发基础-基本环境配置

    从Eclipse时代到Android Studio普及,开发工具越来越好用.早些时候还需要安装Cygwin工具,从Android Studio1.3以后,在Android 环境开发JNI程序搭建开发环 ...

  3. openresty开发系列28--openresty中操作mysql

    openresty开发系列28--openresty中操作mysql Mysql客户端    应用中最常使用的就是数据库了,尤其mysql数据库,那openresty lua如何操作mysql呢?   ...

  4. Android Studio1.4.x JNI开发基础 - 简单实例

    接上一篇,搭建好基于Android Studio的环境之后,编写native代码相对来说也比较简单了.在Android上编写Native代码和在Linux编写C/C++代码还是有区别,Native代码 ...

  5. 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速【转】

    本文转载自:http://blog.csdn.net/mr_raptor/article/details/8006721 Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速 ...

  6. 基于Android的短信应用开发(六)——将发出短信存至数据库

    到目前为止,我们所做的工作都是从手机数据库读取数据并加以显示,而这一次,我们要开始尝试其他类型的操作了,就是将用户发出的信息存至手机短信数据库中,按照惯例,还是先上图,看看效果怎么样再说吧.      ...

  7. 微信小程序开发系列六:微信框架API的调用

    微信小程序开发系列教程 微信小程序开发系列一:微信小程序的申请和开发环境的搭建 微信小程序开发系列二:微信小程序的视图设计 微信小程序开发系列三:微信小程序的调试方法 微信小程序开发系列四:微信小程序 ...

  8. JNI开发笔记(六)--一种更规范的so库生成方法

    一种更规范的JNI工程写法 引 前言 1. MainActivity中的两个重要的语句 2. 建立Util类来替代MainActivity 3. 在MainActivity中验证JNI工程并生成so库 ...

  9. jni 传递字符串到java_Android JNI开发-java与c++其间的中文字符串传递

    Android JNI开发---java与c++之间的中文字符串传递 最近在做一个Android电子词典,其中在从词库中读取词条时,用到了jni---java调用c++;在java代码里调用本地方法时 ...

最新文章

  1. java中的常用的文件流_Java 基础(四)| IO 流之使用文件流的正确姿势
  2. CSS,给我们不一样的体验
  3. weblogic集群的资料
  4. Java Applet 基础
  5. Wireshark技巧-过滤规则和显示规则
  6. LeetCode(1046)——最后一块石头的重量(JavaScript)
  7. Smartisan OS ROM 小米手机 2/2S 标准版 刷机教程
  8. 利用Calendar类判断是平年还是闰年
  9. PHP数据处理之下载远程图片到本地
  10. 【2019年05月28日】指数估值排名
  11. Oracle 应用篇+Oracle Siebel CRM
  12. mcdf项目验证总结-SV
  13. xmos固件u8_XMOS USB数字界面 模块 XU208 U8升级版CPL
  14. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)2
  15. txt文档在html中乱码怎么办,txt文件打开显示乱码怎么办?
  16. Dubbo入门教程,谈谈为什么要用Dubbo?
  17. ​Android动态加载so~
  18. Compact set,紧集,闭集,开集
  19. 漫漫D3路----W3C+CSS+JS
  20. 农行计算机类笔试好过吗,2020中国农业银行招聘笔试要多少分才能进入面试?...

热门文章

  1. 《Cisco ASA设备使用指南》一2.8 Cisco ASA吉比特以太网模块
  2. soundtouch源码分析__based on csdn :
  3. OpenStack 界面开发中的排序问题
  4. DataGridView数据控件演示
  5. Hadoop:The Definitive Guid 总结 Chapter 7 MapReduce的类型与格式
  6. [转载]安装openssl,windows版
  7. Servlet 工作原理解析
  8. 图案研究2--斜线续
  9. Java必会的面试题
  10. 这样玩《TmoLand》包你收益最大化