Android NDK (学习笔记五) —— java层和native层进行字符串的交互处理

java层和native层进行字符串的交互处理

目标:

java层传递String类型的path路径到native层,path值为"/mnt/sdcard/child.txt";

native层获取String类型path,并转换为char类型指针char* file_path;

通过file_path,如果没有该文件,就创建该文件,并写入"I am a child" 字符串;


具体步骤:
1.在Android工程的MainActivity中添加native方法申明:

public static native void updateFile(String path);

2.通过javah命令生成NDK头文件com_child_hellondk_MainActivity.h


3.在hello.c文件中,实现头文件中的方法JNIEXPORT void JNICALL Java_com_child_hellondk_MainActivity_updateFile(JNIEnv *env, jclass jclass, jstring path)

实现代码如下:

JNIEXPORT void JNICALL Java_com_child_hellondk_MainActivity_updateFile
  (JNIEnv *env, jclass jclass, jstring path){

	//生成native的char类型指针
	const char* file_path = (*env)->GetStringUTFChars(env, path, NULL);
	if(file_path != NULL){
		LOGV("From c file_path %s", file_path);
	}

	//打开文件
	FILE* file = fopen(file_path, "a+");
	if(file != NULL){
		LOGV("From c open file success");
	}

	//写入文件
	char data[] = "I am a child";
	int count = fwrite(data, strlen(data), 1, file);
	if(count > 0){
		LOGV("Frome c write file success");
	}

	//关闭文件
	if(file != NULL){
		fclose(file);
	}

	//释放资源
	(*env)->ReleaseStringUTFChars(env, path, file_path);
}

4.在MainActivity的OnCreate()方法中调用updateFile(String path)方法,即为调用native层方法;



5.运行程序,在LogCat中打印相应的Log,在/mnt/sdcard/下生成child.txt文件,该文件中有字符串"I am a child".


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值