android - Cocos2d-x 在 Android 上启动一个 URL

标签 android cocos2d-x

我想从我的游戏中打开由 cocos2dx 2.2.2 创建的 URL,所以请帮忙

最佳答案

如果你想打开浏览器应用程序,你应该使用Intent Java中的系统。要从 C++ 调用 Java 代码,您应该使用 JNI .

您可以创建方法,在 cocos2d-x 的 Java 代码中打开 URL。这是最简单的方法。

  1. 找到org.cocos2dx.lib.Cocos2dxGLSurfaceView java类(位置:cocos2d/platform/android/java)
  2. 给这个类添加方法

    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 );
         }
    }
    
  3. 在C++源文件中包含JniHelper

    #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    #include "JniHelper.h"
    #endif
    
  4. 添加代码,将 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/

相关文章:

java - 使用 Canvas 绘制位图在 Android View 中不起作用

android - Android 中的 ListView 适配器问题

java - 如何持续检查IP是否可达?

android - 在导入路径中找不到标记为 'extensions' 的模块

c++ - 从触摸回调访问 vector 元素的方法时出现 BAD ACCESS 错误

c++ - Cocos2dx v.3.0 人像模式

android - Android 设备的时间会跳跃吗?

java - 将包传递给 if 语句

ios - cocos2d-x-2.2.6/Cocos2dx 2.x加速度计倾斜不起作用

c++ - Cocos2d-x 缺少 sys/socket.h