2013-10-13 143 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來使它工作。