cocos2d-x调用android内嵌浏览器打开网页,可以从入口传入网址,C++调用android 的api即可实现。方法也很简单
1. 修改“cocos2dx\platform\win32”下的CCApplication.h和CCApplication.cpp,添加函数
头文件声明
void openURL(const char* pszUrl);
cpp文件实现:
void CCApplication::openURL(const char* pszUrl)
{
ShellExecuteA(NULL, "open", pszUrl, NULL, NULL, SW_SHOWNORMAL);
首先,C++要调用java代码,cocos2d-x要调用android的api必须使用到jni库
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#endif
现在在需要调用的地方:
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) JniMethodInfo minfo; //getStaticMethodInfo,判断Java静态函数是否存在,并且把信息保存到minfo里 //参数1:JniMethodInfo //参数2:这个类的路径+类名 //参数3:Java函数名称 //参数4:函数参数类型和返回值类型 //返回一个bool,是否找到该函数 bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/yipingtai/org/Webopen","getInstance","()Lcom/yipingtai/org/Webopen;"); jobject jobj;//存对象 if (isHave) { //这里的调用静态的getInstance,返回web类的对象。 jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); isHave = JniHelper::getMethodInfo(minfo,"com/yipingtai/org/Webopen","openWebview","(Ljava/lang/String;)V"); if (isHave) { jstring url = minfo.env->NewStringUTF("http://www.baidu.com"); //调用 openWebview, 参数1:Test对象 参数2:方法ID 参数3:参数 (没有参数就不写了)
minfo.env->CallVoidMethod(jobj, minfo.methodID, url);
} } #else CCDirector::sharedDirector()->end(); #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0); #endif #endif
cocos2d-x调用android内嵌浏览器打开网页,布布扣,bubuko.com
原文:http://blog.csdn.net/u010229677/article/details/27498309