2012-02-19 62 views
0

我正在使用Facebook sdk讓用戶發佈消息到他的牆上。 我用的是現有的Facebook教程: Facebook tutorial在後臺的facebook活動

在這裏,我使用主代碼:

package com.greatapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import com.facebook.android.*; 
import com.facebook.android.Facebook.*; 

public class MyGreatActivity extends Activity { 

    Facebook facebook = new Facebook("YOUR_APP_ID"); 
    String FILENAME = "AndroidSSO_data"; 
    private SharedPreferences mPrefs; 

    @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); 
     } 

     /* 
     * Only call authorize if the access_token has expired. 
     */ 
     if(!facebook.isSessionValid()) { 

      facebook.authorize(this, new String[] {}, new DialogListener() { 
       @Override 
       public void onComplete(Bundle values) { 
        SharedPreferences.Editor editor = mPrefs.edit(); 
        editor.putString("access_token", facebook.getAccessToken()); 
        editor.putLong("access_expires", facebook.getAccessExpires()); 
        editor.commit(); 
       } 

       @Override 
       public void onFacebookError(FacebookError error) {} 

       @Override 
       public void onError(DialogError e) {} 

       @Override 
       public void onCancel() {} 
      }); 
     } 
    } 

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

     facebook.authorizeCallback(requestCode, resultCode, data); 
    } 
} 

我已經擴展與postToWall(字符串消息)方法這個基本代碼。這工作正常。

我按照其他活動的意圖調用此函數。我希望所有這個facebook發佈都是在後臺處理,而不顯示進度條或類似的東西。這可能嗎?

回答

0

Facebook的Android SDK有兩個類似Facebook類的使用方法:https://github.com/facebook/facebook-android-sdk/blob/master/facebook/src/com/facebook/android/AsyncFacebookRunner.java

你可以用它完全相同的方式爲另一種,只是構建認爲你是這樣的:

Facebook fb = new Facebook(appid); 
AsyncFacebookRunner async = new AsyncFacebookRunner(fb); 
async.request("me", new SimpleDialogListener()); 
+0

我該怎麼必須實現該SimpleDialogListener()? – tobias 2012-02-19 15:40:23

+0

做自己的一個巨大的忙,並從Facebook經歷這個**簡單的例子:https://github.com/facebook/facebook-android-sdk/tree/master/examples/simple/src/com/facebook/android 。它解釋了你需要的大部分內容,包括對話監聽器部分。一旦你明白了代碼,一切都會變得更加清晰。作爲一個經驗法則,在你來到這裏或者在其他論壇上發佈問題之前,總是首選實際完成你的功課。 – 2012-02-19 15:59:00

+0

你是極端正確的。但自2天以來我一直在努力。我已閱讀教程。現在我已經完成了自己的工作,並讓發佈在後臺自己的線程中運行。沒關係。謝謝 – tobias 2012-02-19 16:01:34