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