由于公司要做类似内嵌浏览器的功能,在网上找了下,几乎都只是调用外部浏览器来实现,就先把我找到的关于这方面的只是总结一下。(原文转自:http://www.cocos2d-x.org/boards/6/topics/11290)
1. 修改“cocos2dx\platform\win32”下的CCApplication.h和CCApplication.cpp,添加
- // CCApplication.h
- void openURL(const char* pszUrl);
- // CCApplication.cpp
- void CCApplication::openURL(const char* pszUrl)
- {
- ShellExecuteA(NULL, "open", pszUrl, NULL, NULL, SW_SHOWNORMAL);
- }
2. 修改“cocos2dx\platform\android”下的CCApplication.h和CCApplication.cpp,添加
- //CCApplication.h
- void openURL(const char* pszUrl);
- //CCApplication.cpp
- void CCApplication::openURL(const char* pszUrl)
- {
- JniMethodInfo minfo;
- if(JniHelper::getStaticMethodInfo(minfo,
- "org/cocos2dx/lib/Cocos2dxActivity",
- "openURL",
- "(Ljava/lang/String;)V"))
- {
- jstring StringArg1 = minfo.env->NewStringUTF(pszUrl);
- minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, StringArg1);
- minfo.env->DeleteLocalRef(StringArg1);
- minfo.env->DeleteLocalRef(minfo.classID);
- }
- }
3.修改“cocos2dx\platform\android\java\src\org\cocos2dx\lib”下的Cocos2dxActivity.java,添加如下语句:
- private static Activity me = null;
- protected void onCreate(final Bundle savedInstanceState) {
- ...
- me = this;
- ...
- }
- public static void openURL(String url)
- {
- Intent i = new Intent(Intent.ACTION_VIEW);
- i.setData(Uri.parse(url));
- me.startActivity(i);
- }
4.修改“\cocos2dx\platform\ios\”下的CCApplication.h和CCApplication.mm,添加如下语句:
- // CCApplication.h
- void openURL(const char* pszUrl);
- // CCApplication.mm
- void CCApplication::openURL(const char* pszUrl)
- {
- [[UIApplication sharedApplication] openURL:pszUrl];
- }
5.调用:
在你的代码 ,只要调用如下语句就可以用内置浏览器打开url了。
- // 在你的代码中添加
- CCApplication::shareApplication()->openURL("http://www.baidu.com");