我正在为我的 facebook 页面创建一个 android 应用程序。该应用程序应该显示来自 facebook 页面的随机状态(不仅仅是最近的状态)。无论如何我可以做到这一点吗?
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
. 我认为这应该工作得很好。让我知道事情的后续。:-)