android 中 c++调用java代码(3)
2013-12-23 14:47
537 查看
基于前两篇文章,自己做了一个测试demo。
android 程序中代码
package com.example.jniccalljava;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
String contentString;
public static Context mContext;
static {
System.loadLibrary("test");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this.getApplicationContext();
callShowMessage();
}
public void showMessage()
{
contentString = getStringFromC();
AlertDialog.Builder builder = new Builder(this);
builder.setTitle(contentString);
builder.setMessage("这是一个C++调用Android的例子");
builder.show();
}
public native String callShowMessage();
public native String getStringFromC();
}
JNI 文件
/*
* test.cpp
*
* Created on: 2013/12/23
* Author: xxxx
*/
#include<string.h>
#include<jni.h>
/*
* Class: com_example_jniccalljava_MainActivity
* Method: callShowMessage
* Signature: ()Ljava/lang/String;
*/
extern "C" {
JNIEXPORT jstring JNICALL Java_com_example_jniccalljava_MainActivity_callShowMessage(
JNIEnv *env, jobject thiz) {
jmethodID notification_method = env->GetMethodID(env->GetObjectClass(thiz),
"showMessage", "()V");
env->CallVoidMethod(thiz, notification_method);
return 0;
}
/*
* Class: com_example_jniccalljava_MainActivity
* Method: getStringFromC
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_example_jniccalljava_MainActivity_getStringFromC(
JNIEnv *env, jobject thiz) {
return env->NewStringUTF("callCMessageBox");
}
}
Android.mk 文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := ./test.cpp
include $(BUILD_SHARED_LIBRARY)
运行效果如下:
android 程序中代码
package com.example.jniccalljava;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
public class MainActivity extends Activity {
String contentString;
public static Context mContext;
static {
System.loadLibrary("test");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this.getApplicationContext();
callShowMessage();
}
public void showMessage()
{
contentString = getStringFromC();
AlertDialog.Builder builder = new Builder(this);
builder.setTitle(contentString);
builder.setMessage("这是一个C++调用Android的例子");
builder.show();
}
public native String callShowMessage();
public native String getStringFromC();
}
JNI 文件
/*
* test.cpp
*
* Created on: 2013/12/23
* Author: xxxx
*/
#include<string.h>
#include<jni.h>
/*
* Class: com_example_jniccalljava_MainActivity
* Method: callShowMessage
* Signature: ()Ljava/lang/String;
*/
extern "C" {
JNIEXPORT jstring JNICALL Java_com_example_jniccalljava_MainActivity_callShowMessage(
JNIEnv *env, jobject thiz) {
jmethodID notification_method = env->GetMethodID(env->GetObjectClass(thiz),
"showMessage", "()V");
env->CallVoidMethod(thiz, notification_method);
return 0;
}
/*
* Class: com_example_jniccalljava_MainActivity
* Method: getStringFromC
* Signature: ()Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_com_example_jniccalljava_MainActivity_getStringFromC(
JNIEnv *env, jobject thiz) {
return env->NewStringUTF("callCMessageBox");
}
}
Android.mk 文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := ./test.cpp
include $(BUILD_SHARED_LIBRARY)
运行效果如下:
相关文章推荐
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- android jni开发 把一段java代码转换成c++方式调用
- JNI NDK (AndroidStudio+CMake )实现Java调用C C++代码流程
- android 中 c++ 调用java代码(2)
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- Android JNI 使用的数据结构JNINativeMethod详解 ||建立Android SDK下的JNI、JAVA应用完整步骤---Android JAVA调用C++代码
- JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
- Android JNI简单实例(Android java调用C/C++代码)
- Android-NDK开发之基础--Android JNI实例代码(一)-- 在JNI中执行Java方法--C/C++调用Java
- android 中 c++ 调用java代码(1)
- cocos2dx 之 android java 与 c++ 互相调用 代码(以百度定位为例子)
- android jni开发 把一段java代码转换成c++方式调用
- Android Java 与 C++ 恒调用,路径、文件名、延长的最大长度
- java通过JNI调用c++代码
- Java 通过 Jni 调用 C++代码
- 【unity】与Android Activity交互并调用JAVA代码传递参数
- android javascript 调用java代码
- 最简单的java调用C/C++代码的步骤
- Android(安卓)开发通过NDK调用JNI,使用opencv做本地c++代码开发配置方法 边缘检测 范例代码
- android-JNI学习之java和c++相互调用