我正在尝试从 android sdk 访问用户状态。我使用了分页,但是当我运行应用程序时,我只能得到一些结果,直到一个固定的日期。我还尝试设置时间戳来检索状态,但无济于事。
我正在使用的代码是下面的代码。
public void downloadStatuses(final int _since){
Session session = Session.getActiveSession();
if( session != null ){
Bundle params = new Bundle();
//params.putInt("since", _since);
//params.putInt("limit", 1000);
params.putString("fields","from,id,message,updated_time,place");
Request request = new Request(
session,
Facebook.STATUS_PATH,
params,
HttpMethod.GET,
new Request.Callback() {
public void onCompleted(Response response) {
parseStatuses(response);
iterateStatuses(response);
}
}
);
Request.executeBatchAsync(request);
}
}
public void parseStatuses(Response _response){
if( _response.getGraphObject() != null ) {
try {
JSONArray data = _response.getGraphObject()
.getInnerJSONObject()
.getJSONArray("data");
int len = data.length();
for(int i=0 ; i < len ; i++){
StatusWrapper status = new StatusWrapper(data.getJSONObject(i));
Log.v("Status", status.updatedTime);
}
} catch (JSONException e) {
Log.v("JSONException ", e.toString());
}
}
}
public void iterateStatuses(Response _response){
Request next = _response.getRequestForPagedResults(Response.PagingDirection.NEXT);
if(next != null){
next.setCallback(
new Request.Callback() {
public void onCompleted(Response response) {
parseStatuses(response);
iterateStatuses(response);
}
});
Request.executeBatchAsync(next);
}
}
代码工作(?)如下:首先它创建一个新的请求来检索前 25 个项目,并从 downloadStatuses() 发出请求。当这个函数完成时,它是对 facebook 的异步调用,首先我解析状态以使用 parseStatuses 完成我的工作,然后我尝试使用 iterateStatuses 移动到下一页结果。
IterateStatuses 获取 requestForPagingResults 并尝试获取下一组结果。问题是,在四次 iterateStatuses 调用之后 requestForPagingResults 返回 null 但我知道状态比我墙上的状态多。
有人可以帮我吗?