2013-10-13 67 views
2

我正在使用Cocos2dX我有一个名为login的自定义类中的方法,它是由一些本地代码通过JNI调用的,这是为了告诉Facebook登录并显示UI。但是,当我从Facebook注销时,它不显示任何内容。Android Facebook SDK不显示登录屏幕

public class AndroidFacebook { 

    protected static Activity activity = null; 
    protected static Context context = null; 

    protected AndroidFacebook() { 
     // Exists only to defeat instantiation. 
    } 

    public static void init(Activity activity) { 
     AndroidFacebook.activity = activity; 
     AndroidFacebook.context = activity.getApplicationContext(); 
    } 

    @SuppressLint("ShowToast") 
    public static void login() { 

     Session.StatusCallback callback = new Session.StatusCallback() { 

      public void call(Session session, SessionState state, Exception exception) { 

      } 
     }; 

     Session session = Session.getActiveSession(); 

     if (session == null) { 
      session = new Session(AndroidFacebook.activity); 
      Session.setActiveSession(session); 
     } 

     if (!session.isOpened() && !session.isClosed()) { 
      session.openForRead(new Session.OpenRequest(AndroidFacebook.activity) 
       .setPermissions(Arrays.asList("basic_info")) 
       .setCallback(callback)); 
     } else { 
      Session.openActiveSession(AndroidFacebook.activity, true, callback); 
     } 


    } 

} 
+0

嗨, 我想通过JNI在cocos2dx上整合C++,并且有类似的问题,你有没有成功做到这一点? 请让我知道。 非常感谢。 Khash – Khash

+0

我想我最终做到了,但是它非常错误。 –

+0

嗨,詹姆斯,如果你能向我发送代码的Java部分或任何可以提供帮助的提示,我将不胜感激,我在尝试登录时遇到错误。 – Khash

回答

1

JNI调用是在其独立的线程,可能你的C++代码运行的线程。如果你想在android中控制UI,使用view.post或者Activity.runOnUiThread来使它工作。