JNI C ++调用onCreate JAVA - Facebook

时间:2013-12-05 19:08:42

标签: android c++ facebook java-native-interface cocos2d-x

我使用C ++在cocos2dx上创建游戏,现在我想将它与Facebook连接,为了实现这一点,我用JAVA做,然后用JNI连接它。这两件事都很完美,但要将它与Facebook连接,我需要@override方法onCreate(),但我不知道如何从C ++ JNI调用该方法。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我解决了。

问题是你需要把它放在Cocos2dxActivity的主要Actividty上,然后分配onEnter act = this。如果act是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();

                }
            }
          });
    }
}