c++代码
//
// LuaTool.cpp
// TangRenJie
//
// Created by mac on 16/4/6.
//
//
#include "JniUtil.h"
#include "cocos2d.h"
#include "CCLuaEngine.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#endif
using namespace cocos2d;
// 应用计费点id priciePointId
// 计费点对应的金额 money
// 渠道号 qd
//c++调用java
void sendPayInfo(const char * priciePointId,const char * money,const char * qd)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
cocos2d::JniMethodInfo minfo;//定义Jni函数信息结构体
//getStaticMethodInfo 次函数返回一个bool值表示是否找到此函数
const char * jniClass = "org/cocos2dx/lua/AppActivity";//这里写你所要调用的java代码的类名
bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/lua/AppActivity","sdkpay","(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V");//本人在此传递的参数是字符串
if (!isHave) {
CCLog("jni->%s/callJni:此函数不存在", jniClass);
}else{
CCLog("jni->%s/callJni:此函数存在", jniClass);
jstring jpriciePointId = minfo.env->NewStringUTF(priciePointId);
jstring jmoney = minfo.env->NewStringUTF(money);
jstring jqd = minfo.env->NewStringUTF(qd);
//调用此函数
minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID,jpriciePointId,jmoney,jqd);
}
CCLog("jni-java函数执行完毕");
#endif
}
//java调用c++extern "C"
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
//方法名与java类中的包名+方法名,以下划线连接
void Java_org_cocos2dx_lua_AppActivity_paycallbacktoapp(JNIEnv* env, jobject thiz, jint code)
{
CCLog("java回调 sayHello onreceivemsg c++ %d",code);
LuaEngine::getInstance()->getLuaStack()->pushInt(code);
LuaEngine::getInstance()->executeGlobalFunction("onreceivemsg",1);
}
#endif
}
//#endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
//java代码
//c++调用
public static void sdkpay(String mpriciePointId, String mmoney, String mqd)
{}
//java调用
paycallbacktoapp(msg.what);
如果接入过程中 需要用到AppActivity.this 可在开始的时候 声明一个静态变量,在oncrate()中复制this
private static AppActivity m_app = null;
m_app = this