I have made it more simple:
Header File
#ifndef CC_HELPER_H
#define CC_HELPER_H
class CCHelper
{
public:
static void OpeUri(const char* pszUri);
};
#endif
CCP File:
#include “CCHelper.h”
#include “cocos2d.h”
#if(CC_TARGET_PLATFORM CC_PLATFORM_ANDROID)
#include “…/…/cocos2dx/platform/android/jni/JniHelper.h”
#include “…/…/cocos2dx/platform/CCCommon.h”
#endif
USING_NS_CC;
void CCHelper::OpeUri(const char* pszUri)
{
#if(CC_TARGET_PLATFORM CC_PLATFORM_WIN32)
{
ShellExecuteA(NULL, “open”, pszUri, NULL, NULL, SW_SHOWNORMAL);
}
#elif(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
{
JniMethodInfo minfo;
if(JniHelper::getStaticMethodInfo(minfo, “com/util/Helper”, “openUri”, “(Ljava/lang/String;)V”))
{
jstring url = minfo.env~~>NewStringUTF;
minfo.env~~>CallStaticVoidMethod(minfo.classID, minfo.methodID, url);
minfo.env~~>DeleteLocalRef;
minfo.env~~>DeleteLocalRef(minfo.classID);
}
}
#endif
}
Java File:
package com.util;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
public class Helper
{
static Activity mActivity;
public Helper(Activity activity)
{
mActivity = activity;
}
public static void openUri(String uri)
{
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(uri));
mActivity.startActivity(i);
}
}
Using in your Activity:
package com.mycompany.mygame;
import org.cocos2dx.lib.Cocos2dxActivity;
import android.os.Bundle;
import com.util.Helper;
public class MyGame extends Cocos2dxActivity{
protected Helper mHelper;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mHelper = new Helper(this);
}
static {
System.loadLibrary(“game”);
}
}
Usage in your game:
CCHelper::OpeUri("http://www.google.com");