使用facebook api从页面中读取随机状态

时间:2012-12-04 13:39:50

标签: android facebook facebook-graph-api

我正在为我的Facebook页面创建一个Android应用程序。应用程序应该从Facebook页面显示随机状态(不仅仅是最近的状态)。无论如何我能做到吗?

1 个答案:

答案 0 :(得分:1)

我从未做过任何类似的事情,但我认为你可以从中获得一些逻辑并让它发挥作用。

第1步:

拨打Facebook API,获取所有状态更新,然后在for循环中将其添加到ArrayList<String>。例如,Facebook以JSON格式返回其数据。我假设,你已经知道如何获取数据。您需要解析Facebook API调用返回的JSON数据中的“message”标记。

例如:

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

您尚未发布任何代码,因此很难提供适合您的方案的内容。但我认为这应该让你开始。您可能需要调整一些内容并使其适合您自己的代码。

希望这有帮助。

编辑:根据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()的{​​{1}}中执行剩余代码,您可以在其中选择随机状态更新:

AsyncTask

@Override protected void onPostExecute(Void result) { int intRandom = randomGenerator.nextInt(arrStatusMessage.size()); String strRandomStatus = arrStatusMessage.get(intRandom); txtRanStatus.setText(strRandomStatus); } 声明为全局变量并在调用TextView之前将其强制转换为onCreate()。我认为这应该工作得很好。让我知道事情的后续。 : - )