2013-08-16 33 views
0

從示例中我有這段代碼(下面)提供瞭如何從用戶請求發佈權限,唯一的問題是,當大塊導致fb對話框彈出並詢問用戶的代碼「您想爲此應用發佈權限嗎?」被稱爲應用程序繼續執行下面的代碼(在這種情況下aynctask api請求)這是一個問題bc fb並不真的給我一個布爾或任何其他方式來檢查是否(用戶批准權限請求& &許可被成功授予){Facebook-Android SDK:暫停執行,直到收到來自用戶/ fb的響應

執行的AsyncTask API請求更新DB

}

也許我失去了一些東西還是真的啞了,但是這是對他們的一部分不horriable實現?是不是很標準,任何專業公開使用的API應該返回一個布爾值,一個字符串...我可以用它來創建一個if語句?!?

private void turnOnFacebookPublishing() { 
     Session session = Session.getActiveSession(); 
     if (session != null) { 
      Log.i("sharedprefs fbPublishBool at start of turnOnFbPublish", String.valueOf(sharedprefs.isFacebookPublishingOn())); 
      // Check for publish permissions  
      List<String> permissions = session.getPermissions(); 
      Log.i("permissions prior to if", permissions.toString()); 
      if (!isSubsetOf(PERMISSIONS, permissions)) { 
       pendingPublishReauthorization = true; 
       Session.NewPermissionsRequest newPermissionsRequest = new Session 
         .NewPermissionsRequest(this, PERMISSIONS); 
       session.requestNewPublishPermissions(newPermissionsRequest); 

      } 

// asynctask api request to my api that updates a record on my db that determines a users Facebook publishing preference goes here 
      } 

} 

回答

0

有兩種方法可以得到答覆。

  1. 通過session.addCallback()將Session.Callback附加到會話對象。
  2. 附上Session.Callback到newPermissionsRequest通過newPermissionsRequest.setCallback()

然後你重寫你的活動或片段的onActivityResult方法調用Session.getActiveSession()。onActivityResult,和您的回調將被調用。

我們需要回調而不是直接返回某些數據的原因是因爲這是一個異步操作(它創建了啓動另一個活動的意圖),所以直到它通過onActivityResult返回時纔會知道結果。

相關問題