继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

Android仓库建设——JNI的字符串交互处理

野老盟客
关注TA
已关注
手记 19
粉丝 33
获赞 1498
图片描述
JNI的字符串交互处理

JAVA层和native层进行字符串交互处理:
1.进行字符串操作的时候,如果还想要进行别的操作可以参考官网的操作,比如在http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html网址内的String Operations中就存在着这些许多操作。
2.在MainActivity的中增加C语言的方法,这里只需要增加
public static native void updateFile(String path);
该方法即可。
3.对项目重新编译,重新获取到.h文件,可以查找
com_example_ndkdemp_MainActivity.h文件是否具有刚才写的方法。
4.在c文件里面写刚才写的方法内容,直接从.h文件拷贝方法名。
5.利用
(env)->GetStringUTFChars(env,path,NULL);
方法获取到从JAVA传过来的路径指针:const char
file_path
并进行字符串操作,下面的操作是关于写入一个文件中的操作:
//生成native的Char指针
const char file_path=(env)->GetStringUTFChars(env,path,NULL);
if(file_path!=NULL){
LOGV("from C file_path %s", file_path);
}
//打开文件,进行追加打开
FILEfile=fopen(file_path,"a+");
if(file!=NULL){
LOGV("from C open file success");
}
//写入文件
char data[]="I am Boy";
int count=fwrite(data,strlen(data),1,file);
if(count>0){
LOGV("from C write file success");
}
//关闭文件
if(file!=NULL) {
fclose(file);
}
//释放资源
(
env)->ReleaseStringUTFChars(env,path,file_path);

注意项目错误: LOGV("from C file_path %s", file_path);需要添加新的消息的时候注意按照C的格式操作,%s代表是字符数组。

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP