您的位置:首页 > 移动开发 > Android开发

Android-java调用本地方法返回字符串显示在界面上/NDK-JNI开发实例(二)

2015-08-31 14:49 991 查看
java调用本地方法返回字符串显示在界面上

前面的配置、生成头文件等基本方法请参考:
 Android-使用Android studio 进行NDK-JNI开发实例(一)

基本步骤如下:



代码:
生成的方法名  
JNIEXPORT jstring JNICALL Java_com_example_yu_1longji_android24_MainActivity_hello(JNIEnv *, jobject);


hello.c

//
// Created by yu_longji on 2015/8/31.
//
#include <jni.h>
JNIEXPORT jstring JNICALL Java_com_example_yu_1longji_android24_MainActivity_hello
(JNIEnv *env , jobject obj){
//*cstr 指向的是字符串数组的首地址
char *cstr = "hello world";
//把C语言的字符串转换成java的字符串
// jstring     (*NewStringUTF)(JNIEnv*, const char*);
//	jstring jstr = (*(*env)).NewStringUTF(env, cstr);
jstring jstr = (*env)->NewStringUTF(env, cstr);
//将C语言的字符串数组转成了Java语言中的字符串String类型并返回
return jstr;
}


MainActivity.java

package com.example.yu_longji.android24;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends Activity {
//加载so类库
static{
//"helloworld" 与ndk{ moduleName "helloworld" }相同
System.loadLibrary("helloworld");
}
//本地方法 返回值为String类型
public native String hello();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tv = (TextView)findViewById(R.id.tv);
//调用hello()本地方法
tv.setText(hello());
}

}


结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息