■
Facebook SDK for Androidを使用してのサンプルを今日から少しずつ書いていこうかと。
SDKの導入に関しては下記のリンクを参照。
Facebook API 入門
Facebookでユーザーのウォールやニュースフィードを取得するにはログイン処理が必要だが今回は割愛。
次回以降に記述する予定です。
以下、サンプル
/*! * @file * * @brief facebook ウォール/ニュースフィード取得サンプル * * @author NoasMark * * @date 2011/08/24 */ package jp.noasmark.sampleActivity; import java.net.URLDecoder; import java.io.FileNotFoundException; import java.io.IOException; import java.net.MalformedURLException; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.view.Window; import android.os.Bundle; import org.json.*; import com.facebook.android.*; import com.facebook.android.AsyncFacebookRunner.RequestListener; /*! * @brief sampleActivity */ public class sampleActivity extends Activity { private static final String[] PERMISSIONS = new String[] { "publish_stream", "read_stream", "offline_access", }; private ProgressDialog m_prgDialog; private Facebook m_Facebook; private AsyncFacebookRunner m_AsyncRunner; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); m_Facebook = new Facebook("FACEBOOK_APPLI_ID"); m_AsyncRunner = new AsyncFacebookRunner(m_Facebook); // ----------------------------. // ログイン処理は省略. // ----------------------------. showLoadingDialog(); m_AsyncRunner.request("me/home", new FacebookRequestListener()); // ニュースフィード情報取得. //m_AsyncRunner.request("me/feed", new FacebookRequestListener()); // ウォール情報取得. } public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); m_Facebook.authorizeCallback(requestCode, resultCode, data); } public void showLoadingDialog() { m_prgDialog = new ProgressDialog(sampleActivity.this); m_prgDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); m_prgDialog.setMessage("Loading..."); m_prgDialog.show(); } public class FacebookRequestListener implements AsyncFacebookRunner.RequestListener { public void onComplete(String response, Object state) { m_prgDialog.dismiss(); try { final JSONObject json = new JSONObject(response); if (json != null) { JSONArray data = json.getJSONArray("data"); final int nLoopLimit = (data != null ? data.length() : 0); for (int i = 0; i < nLoopLimit; ++i) { JSONObject obj = data.getJSONObject(i); if (obj != null) { // OBJECT_ID. String strObjectID = obj.getString("id"); // ユーザーIDとユーザー名. JSONObject from = obj.getJSONObject("from"); String strID = from.getString("id"); String strName = from.getString("name"); String strMsg = ""; // メッセージが無い場合もある. try { strMsg = URLDecoder.decode(obj.getString("message")); } catch (Exception e2) { } } } } } catch (Exception e) { } } public void onFacebookError(FacebookError e, Object state) { m_prgDialog.dismiss(); } public void onFileNotFoundException(FileNotFoundException e, Object state) { m_prgDialog.dismiss(); } public void onIOException(IOException e, Object state) { m_prgDialog.dismiss(); } public void onMalformedURLException(MalformedURLException e, Object state) { m_prgDialog.dismiss(); } } }