Cocos2d-js: C++ 调用java 代码

前言
对于Cocos 这一块,完全是个菜鸟,虽然很多看不懂,但做项目需要用到,没办法只能自己慢慢摸索前进了. (•̀ᴗ•́)و ̑̑

环境:Cocos2d-js 、Android

Cocos2d 里面调用Java 方法操作,在制作Android版本时,需要使用C++调用java的函数,这个通过jni实现.

下面是 总结的几种 示例,记录一下,以后忘了还可以温故一下 ╰( ̄▽ ̄)╭。

C++ 调用 java :

#inclde "jnixxx.h" // 头文件
#ifder WIN32
#else
#define CLASS_NAME "com/xxx/xxxx/xxActivity"  // 需要调用的完整类名

extend "C"{

// 调用 java 返回值为 String 方法
std::string jniGetTest(){
  std::string strTest; 
  JniMedhodInfo info;
  bool ret = JniHelper:: getStaticMethodInfo(info, CLASS_NAME, "getTest", "()Ljava.lang/String;"); // 调用java 的静态方法 getTest();
  jstring jsStr;
  if(ret){
    jsStr = static_cast<jstring>(info.env->CallStaticObjectMehod(info.classID, info.methodID));
    const char* s = info.env->GetStringUTFChars(jsStr, NULL);
    if(s){
      strTest;
      info.env->ReleaseStringUTFChars(jsStr, s);
    }
    info.env->DeleteLocalRef(info.classID);
    return strTest;
  }

 }


// 调用 java 返回值为 boolean 方法
bool jniIsNetWork(){
  JniMethodInfo info;
  bool ret = JniHelper::getStaticMehodInfo(info, CLASS_NAME, "isNetWork", "()Z"); // 调用java 的静态 boolean 方法 isNetWork();
  bool isConnect;
  if(ret){
    isConnect = static_cast<bool>(info.env->CallStaticObjectMethod(info.classID, info.methodID));
    info.env->DeleteLocalRef(info.classID);
  }
  return isConnect;
 }

// 调用 java 返回值为 void 方法
void jniGetLogin(){
  JniMethodInfo info;
  bool ret = JniHelper::getStaticMehodInfo(info,CLASS_NAME, "onLogin", "()V"); // // 调用java 的静 void 态方法 isNetWork();
  if(ret){
    info.env->CallStaticObjectMehtod(info.classID, info.methodID);
    info.env->DeleteLocalRef(info.classID);
  }
 }
}
#endif

java代码:

// 返回 String 类型 方法
public static String getTest(){
  String str = "getTest";
  return str;
}

// 返回 boolean 类型 方法
public static boolean isNetWork(){
  boolean isConnect = false;
  return isConnect;
}

// void 类型 方法
public static void onLogin(){
  startActivity(this, new Intent(this, LoginActivity,class));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值