-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 回答