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