Android JNI-C++;调用oncreatejava-Facebook 我在CCOS2DX上用C++创建了一个游戏,现在我想把它与脸谱网连接起来,用java完成,然后把它与JNI连接起来。这两种方法都很好,但是为了与脸谱网连接,我需要重写OnCeCuto()方法,但是我不知道如何从C++ JNI调用这个方法。
当我将我的Facebook代码移动到一个新函数时,我需要执行这个命令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
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();
}
}
});
}
}