2011-12-01 32 views
3

我已經將Facebook集成到我的應用程序。然而,它不是在對話框中顯示它,而是全屏打開。我想知道是否有人會知道將其改爲對話框的方法。Android Facebook對話

的FaceBook處理類:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    /* 
    * Get existing access_token if any 
    */  
    mPrefs = getPreferences(MODE_PRIVATE); 
    String access_token = mPrefs.getString("access_token", null); 
    long expires = mPrefs.getLong("access_expires", 0); 

    if(access_token != null) 
     facebook.setAccessToken(access_token); 

    if(expires != 0) 
     facebook.setAccessExpires(expires); 


    if (facebook.isSessionValid()) 
     postFacebookMessage(); 

    else { 
     facebook.authorize(this, new String[] {"publish_stream"}, new Facebook.DialogListener() { 

     @Override 
     public void onFacebookError(FacebookError e) { 
      Toast.makeText(FacebookConnector.this, "Facebook error: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onError(DialogError e) { 
      Toast.makeText(FacebookConnector.this, "Facebook dialog error: " + e.getLocalizedMessage(), Toast.LENGTH_LONG).show(); 
     } 

      @Override 
     public void onComplete(Bundle values) { 
       postFacebookMessage(); 
      Toast.makeText(FacebookConnector.this, "Thank You For Sharing!", Toast.LENGTH_SHORT).show(); } 

     @Override 
     public void onCancel() {Toast.makeText(FacebookConnector.this, "Facebook authorization cancelled.", Toast.LENGTH_LONG).show(); 
     } 
    }); 
    } 
} 

private void postFacebookMessage() { 

    AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(facebook); 
    Bundle params = new Bundle(); 
    params.putString("message", MSG); 
    params.putString("picture", "http://meanwhileinwv.com/meanwhile.png"); 
    mAsyncRunner.request("me/feed", params, "POST", new FacebookPostListener(), null); }  

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    facebook.authorizeCallback(requestCode, resultCode, data); 
} 
} 

上面的代碼產生以下結果:

enter image description here

我想它是facebook的窗打開到對話框。

enter image description here

+0

你不介意分享miniproject你是怎麼做到的Facebook的登錄? – Lunatikul

回答

8

呼叫授權與附加參數Facebook.FORCE_DIALOG_AUTH,像這樣:我與我的Twitter的代碼實現了這一

facebook.authorize(this, new String[] {"publish_stream"}, Facebook.FORCE_DIALOG_AUTH, new Facebook.DialogListener() { ... }); 
+0

非常感謝你!有沒有辦法給它圓角?如果沒有,沒什麼大不了的,只是好奇。 – comead

+0

您可以在Facebook SDK中對* FbDialog.java **進行更改並應用所需的樣式。 – NOSTRA

+0

風格是什麼?我不是最好的Android的圖形端 – comead