我使用C ++在cocos2dx上创建了一个游戏,现在我想将其与Facebook连接起来,要实现这一点,我需要使用JAVA进行操作,然后将其与JNI连接。两者都可以正常工作,但是要将其与Facebook连接,我需要@override方法onCreate(),但是我不知道如何从C ++ JNI调用该方法。

当我将Facebook代码移至新功能时,我需要执行此

Session.openActiveSession(this, true, new Session.StatusCallback() {}


但是,“ this”在onCreate()之外不存在。有任何想法吗?

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

2-如何从JNI C ++调用方法onCreate?

我的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);
    }


感谢:D

最佳答案

我解决了

问题是您需要将其放在Cocos2dxActivity的主Actividty上,并指定onEnter act = this。行为是Cocos2dxActivity,在您称之为的任何地方,您都将行为

码:

 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();

                }
            }
          });
    }
}

10-07 19:18
查看更多