接着前面的Hello篇章,我们继续开拓,如果没有搭建好Hello JNI的童鞋呢,先去看博主的第一篇,传送门:
JNI环境搭建
1.字符串操作
使用c代码创建一个Java字符串
上一篇中我们使用了一个方法,来生成一个字符串,那博主就创建了一个新的项目,然后和上一篇的步骤是一样的,如果不会的请移步哦
博主创建的.c文件内容为:
#include <jni.h>
#include <string.h>
JNIEXPORT jstring JNICALL Java_com_xiaojinzi_basedatasove_MainActivity_getString(
JNIEnv * e, jobject jb) {
return (*e)->NewStringUTF(e, "hell JNI");
}
可以看到非常简单,就是创建了一个字符串,然后返回,在java层就可以调用此方法来获取此字符串啦
public class MainActivity extends Activity {
static {
System.loadLibrary("demo");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void clickView(View v) {
Toast.makeText(this, "content:" + getString(), Toast.LENGTH_LONG).show();
}
private native String getString();
}
博主这里加载的.so文件名称是demo,和上一篇的是不一样的,请填写你自己在Android.mk文件中填写的名称
效果如下
把Java字符串转换成c字符串
我们先改变本地方法的参数,在MainActivity中修改
private native String getString(String content);
然后我们需要在对应的本地实现中改变输入的参数,然后使用
未完待续