2014年2月17日 星期一

【cocos2dx】用外部浏览器打开url的方法

http://blog.csdn.net/teng_ontheway/article/details/9614125


 由于公司要做类似内嵌浏览器的功能,在网上找了下,几乎都只是调用外部浏览器来实现,就先把我找到的关于这方面的只是总结一下。(原文转自:http://www.cocos2d-x.org/boards/6/topics/11290

1. 修改“cocos2dx\platform\win32”下的CCApplication.h和CCApplication.cpp,添加
  1. // CCApplication.h  
  2. void openURL(const char* pszUrl);  


  1. // CCApplication.cpp  
  2. void CCApplication::openURL(const char* pszUrl)  
  3. {  
  4.     ShellExecuteA(NULL, "open", pszUrl, NULL, NULL, SW_SHOWNORMAL);  
  5. }  


2. 修改“cocos2dx\platform\android”下的CCApplication.h和CCApplication.cpp,添加
  1. //CCApplication.h  
  2. void openURL(const char* pszUrl);  
  1. //CCApplication.cpp  
  2. void CCApplication::openURL(const char* pszUrl)  
  3. {  
  4.     JniMethodInfo minfo;  
  5.           
  6.     if(JniHelper::getStaticMethodInfo(minfo,   
  7.         "org/cocos2dx/lib/Cocos2dxActivity",   
  8.         "openURL",   
  9.         "(Ljava/lang/String;)V"))  
  10.     {  
  11.         jstring StringArg1 = minfo.env->NewStringUTF(pszUrl);  
  12.         minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID, StringArg1);  
  13.         minfo.env->DeleteLocalRef(StringArg1);  
  14.         minfo.env->DeleteLocalRef(minfo.classID);  
  15.     }  
  16. }  



3.修改“cocos2dx\platform\android\java\src\org\cocos2dx\lib”下的Cocos2dxActivity.java,添加如下语句:


  1. private static Activity me = null;  


  1. protected void onCreate(final Bundle savedInstanceState) {  
  2.     ...  
  3.     me = this;  
  4.     ...  
  5. }  


  1. public static void openURL(String url)   
  2. {   
  3.       Intent i = new Intent(Intent.ACTION_VIEW);    
  4.       i.setData(Uri.parse(url));  
  5.       me.startActivity(i);  
  6. }  




4.修改“\cocos2dx\platform\ios\”下的CCApplication.h和CCApplication.mm,添加如下语句:
  1. // CCApplication.h  
  2.  void openURL(const char* pszUrl);  


  1. // CCApplication.mm  
  2. void CCApplication::openURL(const char* pszUrl)  
  3. {  
  4.     [[UIApplication sharedApplication] openURL:pszUrl];  
  5. }  





5.调用:
在你的代码 ,只要调用如下语句就可以用内置浏览器打开url了。

  1. // 在你的代码中添加  
  2. CCApplication::shareApplication()->openURL("http://www.baidu.com");