我想从我的游戏中打开由 cocos2dx 2.2.2 创建的 URL,所以请帮忙
最佳答案
如果你想打开浏览器应用程序,你应该使用Intent Java中的系统。要从 C++ 调用 Java 代码,您应该使用 JNI .
您可以创建方法,在 cocos2d-x 的 Java 代码中打开 URL。这是最简单的方法。
- 找到
org.cocos2dx.lib.Cocos2dxGLSurfaceView
java类(位置:cocos2d/platform/android/java) 给这个类添加方法
public static void openWebURL( String inURL ) { if (mCocos2dxGLSurfaceView != null) { Intent browse = new Intent( Intent.ACTION_VIEW , Uri.parse( inURL ) ); browse.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mCocos2dxGLSurfaceView.getContext().startActivity( browse ); } }
在C++源文件中包含
JniHelper
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include "JniHelper.h" #endif
添加代码,将 Java 方法调用到正确的位置
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) JniMethodInfo t; if (JniHelper::getStaticMethodInfo(t, "org/cocos2dx/lib/Cocos2dxGLSurfaceView", "openWebURL", "(Ljava/lang/String;)V")) { jstring stringArg = t.env->NewStringUTF(yourWebUrl); t.env->CallStaticIntMethod(t.classID, t.methodID, stringArg); t.env->DeleteLocalRef(stringArg1); t.env->DeleteLocalRef(t.classID); } #endif
更正确的方法是在基本Activity 中定义Java 方法类(扩展 Cocos2dxActivity
)。您应该处理应用程序生命周期以在 Java 代码中存储对 Activity 的正确静态引用,或在 C++ 代码中存储对 Activity 对象的本地引用。
关于android - Cocos2d-x 在 Android 上启动一个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22322164/