-1

Facebookページ用のAndroidアプリを作成しています。このアプリは、Facebook ページから (最近のものだけでなく) ランダムなステータスを表示することになっています。とにかく私はこれを行うことができますか?

4

1 に答える 1

1

私はこれまでにそのようなことをしたことはありませんが、これからいくつかのロジックを理解して機能させることができると思います.

ステップ1:

Facebook API を呼び出し、すべてのステータス更新を取得し、forループ内でそれらを に追加しますArrayList<String>。たとえば、Facebook はそのデータを JSON 形式で返します。データを取得する方法はすでに知っていると思います。Facebook API 呼び出しによって返された JSON データから「メッセージ」タグを解析する必要があります。

例えば:

ArrayList<String> arrStatusMessage;


for (int i = 0; i < JAFeeds.length(); i++)  {
    JSONObject JOFeeds = JAFeeds.getJSONObject(i);

    if (JOFeeds.has("message")) {
        String strStatusMessage = JOFeeds.getString("message");
        arrStatusMessage.add(strStatusMessage );
    }
}

ステップ2:

Facebook ステータス メッセージのセット全体を取得したら、java.util.Randomインスタンスを使用する必要があります。

例: (注:このコードはテストしていないため、エラーが発生する可能性があります。動作させるには、少し操作する必要がある場合があります。:-( )

private static final Random randomGenerator = new Random();


int intRandom = randomGenerator.nextInt(arrStatusMessage.size());
String strRandomStatus = arrStatusMessage.get(intRandom);

ステップ 3:

を使用してstrRandomStatusに設定しTextViewます。

例えば:

TextView txtRanStatus = (TextView) findViewById(R.id.txtRanStatus);
txtRanStatus.setText(strRandomStatus);

あなたはコードを投稿していないので、あなたのスキームに適合するものを提供することは困難です. しかし、これで始めるべきだと思います。おそらく、いくつかのことを調整して、独自のコードに適合させる必要があります。

お役に立てれば。

編集: th OP のコメントに従って、Facebook ステータス メッセージを取得するためにいくつかのコードを追加します。

あなたのonCreate()方法で:

新しいAsyncTaskを開始します。

new getFacebookFeeds().execute();

アプリでこのメソッドを使用して Facebook 呼び出しを行い、Graph API からすべてのフィードを取得します。

private class getFacebookFeeds extends AsyncTask<Void, Void, Void>  {
    @Override
    protected Void doInBackground(Void... params) {
        String URL = "https://graph.facebook.com/me/home&access_token=ACCESS_TOKEN?limit=10";
        try {
            HttpClient hc = new DefaultHttpClient();
            HttpGet get = new HttpGet(URL);
            HttpResponse rp = hc.execute(get);

            if (rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                String result = EntityUtils.toString(rp.getEntity());

                // GET THE INTIAL RESULTS JSON ROOT
                JSONObject JORoot = new JSONObject(result);

                // GET THE "DATA" TAG FOR FEEDS ROOT
                JSONArray JAFeeds = JORoot.getJSONArray("data");

                for (int i = 0; i < JAFeeds.length(); i++) {
                    JSONObject JOFeeds = JAFeeds.getJSONObject(i);

                    if (JOFeeds.has("message")) {
                        String strStatusMessage = JOFeeds.getString("message");
                        arrStatusMessage.add(strStatusMessage );
                    }
                }
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

}

onPostExecute()上記のコードで、ランダムなステータス更新を選択する残りのコードを実行できますAsyncTask

@Override
protected void onPostExecute(Void result) {
    int intRandom = randomGenerator.nextInt(arrStatusMessage.size());
    String strRandomStatus = arrStatusMessage.get(intRandom);

    txtRanStatus.setText(strRandomStatus);

}

をグローバル変数TextViewとして宣言し、を呼び出す前にキャストします。これはうまくいくはずだと思います。それがどうなるか教えてください。:-)onCreate()AsyncTask

于 2012-12-04T14:14:23.440 に答える