在后台的facebook活动
问题描述:
我正在使用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发布都是在后台处理,而不显示进度条或类似的东西。这可能吗?
答
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());
我该怎么必须实现该SimpleDialogListener()? – tobias 2012-02-19 15:40:23
做自己的一个巨大的忙,并从Facebook经历这个**简单的例子:https://github.com/facebook/facebook-android-sdk/tree/master/examples/simple/src/com/facebook/android 。它解释了你需要的大部分内容,包括对话监听器部分。一旦你明白了代码,一切都会变得更加清晰。作为一个经验法则,在你来到这里或者在其他论坛上发布问题之前,总是首选实际完成你的功课。 – 2012-02-19 15:59:00
你是极端正确的。但自2天以来我一直在努力。我已阅读教程。现在我已经完成了自己的工作,并让发布在后台自己的线程中运行。没关系。谢谢 – tobias 2012-02-19 16:01:34