Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android JNI-C++;调用oncreatejava-Facebook 我在CCOS2DX上用C++创建了一个游戏,现在我想把它与脸谱网连接起来,用java完成,然后把它与JNI连接起来。这两种方法都很好,但是为了与脸谱网连接,我需要重写OnCeCuto()方法,但是我不知道如何从C++ JNI调用这个方法。_Android_C++_Facebook_Java Native Interface_Cocos2d X - Fatal编程技术网

Android JNI-C++;调用oncreatejava-Facebook 我在CCOS2DX上用C++创建了一个游戏,现在我想把它与脸谱网连接起来,用java完成,然后把它与JNI连接起来。这两种方法都很好,但是为了与脸谱网连接,我需要重写OnCeCuto()方法,但是我不知道如何从C++ JNI调用这个方法。

Android JNI-C++;调用oncreatejava-Facebook 我在CCOS2DX上用C++创建了一个游戏,现在我想把它与脸谱网连接起来,用java完成,然后把它与JNI连接起来。这两种方法都很好,但是为了与脸谱网连接,我需要重写OnCeCuto()方法,但是我不知道如何从C++ JNI调用这个方法。,android,c++,facebook,java-native-interface,cocos2d-x,Android,C++,Facebook,Java Native Interface,Cocos2d X,当我将我的Facebook代码移动到一个新函数时,我需要执行这个命令 Session.openActiveSession(this, true, new Session.StatusCallback() {} 但是“this”不存在于onCreate()之外。有什么想法吗 1-。如何使用Facebook登录,而不调用onCreate()方法{} 2-。如何从JNI C++调用到创建? 我的JNI代码: 它调用FacebookLogin,可以正常工作,但不需要onCreate if(JniHel

当我将我的Facebook代码移动到一个新函数时,我需要执行这个命令

Session.openActiveSession(this, true, new Session.StatusCallback() {}
但是“this”不存在于onCreate()之外。有什么想法吗

1-。如何使用Facebook登录,而不调用onCreate()方法{}

2-。如何从JNI C++调用到创建? 我的JNI代码:

它调用FacebookLogin,可以正常工作,但不需要onCreate

if(JniHelper::getStaticMethodInfo(minfo,
                                      "com/company/game/Facebook",
                                      "facebookLogin",
                                      "()V"))
    {
        jstring StringArg1 = minfo.env->NewStringUTF(msg);
        minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
        minfo.env->DeleteLocalRef(minfo.classID);
    }
谢谢:我解决了

问题是,您需要将它从Cocos2dxActivity放到主Activityty上,并分配onEnter act=this。act是Cocos2dxActivity,在任何你称之为它的地方,你都会放置act

代码:


查看Cocos2dx的开源Plugin-X项目,你可以在这里了解编写所有JNI调用的想法。嗨@VikasPatidar,我会检查一下,谢谢:DHi,我也有同样的问题,伙计,你在Facebook集成方面成功了吗?请让我知道谢谢a lotHi@Khash,是的,问题是您需要将它放在Cocos2dxActivity的主活动上,并分配onEnter act=this。当act是Cocos2dxActivity时,在任何你称之为这个的地方,你都会放置act。我会将代码粘贴到answerHi@EduardoIglesias上,谢谢等待代码!你好,爱德华多,谢谢你的代码,我这里有几个问题:1-你说的主要活动是什么意思?我的cocos2dx主活动看起来不像这样,它有“System.loadLibrary(“game”);”。2-什么是“会话=会话2;”中的会话?3-什么是userID(user.getId(),mail,user.getName())?当我使用完全相同的代码时,我得到一个错误“此静态方法无法从Cocos2dxActivity中隐藏实例方法”,并建议我删除静态。@Khash,我的方法、userID和isLoggedIn是本机方法。您需要静态的,因为它将从C++调用。主活动,,对不起,我指的是您项目中的主文件。“session=session2;”用于检查会话是否已打开。你可以消除
 public class game extends Cocos2dxActivity{

    static Cocos2dxActivity act;


protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        System.out.println("Super init");
        act = this;
}

public static void FacebookLogin() {
        Session.openActiveSession(act, true, new Session.StatusCallback() {

            // callback when session changes state
            @Override
            public void call(final Session session2, SessionState state, Exception exception) {
                if (session2.isOpened()) {

                    Request.newMeRequest(session2, new Request.GraphUserCallback() {

                          // callback after Graph API response with user object
                          @Override
                          public void onCompleted(GraphUser user, Response response) {
                            if (user != null) {
                              Log.d("Facebook", "Hello " + user.getName() + "! Id: "+user.getId());
                              isLoggedIn(); 
                              String mail = (String)response.getGraphObject().getProperty("email");
                              if (mail == null) {
                                  mail = "null";
                              }
                              userID(user.getId(), mail, user.getName());
                              session = session2;
                            }
                          }
                    }).executeAsync();

                }
            }
          });
    }
}