JNI C++ call onCreate JAVA - Facebook

JNI C++ call onCreate JAVA - Facebook

本文关键字:Facebook JAVA onCreate C++ call JNI      更新时间:2023-10-16

我用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的主Activitty上,并分配onEnter act=this。act是Cocos2dxActivity,在任何你称之为这个的地方,你都会放置act

代码:

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