我用 C++ 在 cocos2dx 上创建了一个游戏,现在我想将它连接到 Facebook,为了完成这个,我用 JAVA 完成它,然后将它连接到 JNI。两者都运行良好,但要将其与 Facebook 连接,我需要 @override onCreate() 方法,但我不知道如何从 C++ JNI 调用该方法。
当我将我的 Facebook 代码移动到一个新函数时,我需要执行它
Session.openActiveSession(this, true, new Session.StatusCallback() {}
但是“this”不存在于 onCreate() 之外。有任何想法吗?
1-。如何在不调用方法 onCreate() 的情况下使用 Facebook 登录{}
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。其中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();
}
}
});
}
}
关于android - JNI C++ 调用 onCreate JAVA - Facebook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20408501/