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 を 4 回呼び出した後、requestForPagingResults は null を返しますが、壁にはそれよりも多くのステータスがあることがわかっています。
誰でも私を助けることができますか?