在我的应用程序中,我试图在未来时间发布我的 Facebook 状态,并且为了实现这一点,我创建了一个广播接收器。我使用 PendingIntent 和 AlarmManager 通过 MainActivity 调用。如果时间跨度介于1或2分钟之间,则状态将成功发布。但如果时间跨度大于5分钟那么。我收到了来自Facebook的Request类的错误代码为java.io.EOFException
的{{1}}作为回应。
请告诉我如何在以后的后台发布状态消息。我也尝试过服务,但我也得到了相同的回复。
先谢谢。
答案 0 :(得分:0)
我终于找到了解决这个问题的方法,但它似乎适用于我的情况,但不知道这是一种系统的方式。之前我曾尝试在BroadcastReciever
中发布状态,但获得了java.io.EOFException
。因此,为了克服这个问题,我打开了Activity
而不是BroadcastReciever
,并在内部启动了登录过程,并在call(Session session, SessionState state, Exception exception)
方法中执行了状态发布。
这些是我遵循的步骤:
<强> MainActivity.java 强>
Intent in = new Intent(this, FutureActivity.class);
in.putExtra("status", status);
PendingIntent pi = PendingIntent.getActivity(this, 0, in, PendingIntent.FLAG_ONE_SHOT);
AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.RTC_WAKEUP, mCal.getTimeInMillis(), pi);
MainActivity
我在FutureActivity
存储的特定时间通过PendingIntent
通过mCal
致电Status mStatus;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mStatus = (Status) getIntent().getSerializableExtra("status");
new FacebookLogin(this).nativeLogin(true, this);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (Session.getActiveSession() != null) {
Session.getActiveSession().onActivityResult(this, requestCode,
resultCode, data);
Session.setActiveSession(Session.getActiveSession());
}
}
@Override
public void call(final Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
Request.newMeRequest(session, new Request.GraphUserCallback() {
@Override
public void onCompleted(GraphUser user, Response response) {
// here you can write the code to post the status
mStatus.setSession(session);
new PostStatus(mStatus).post(FutureActivity.this);
// here you can write the code to post the status
}
}).executeAsync();
}
}
。
<强> FutureActivity.java 强>
newMeRequest
FutureActivity只是一个没有任何UI的虚拟活动,它的主要目的是以静默方式登录用户并通过newMeRequest
获取用户的信息,以确保我们有效,我试过跳过java.io.EOFExcepion
然后我再次获得{{1}}并在此方法中我已完成编码以发布状态,即使在 45分钟的时间段内也成功发布< /强>
如果对您有帮助,请尝试此过程并对此答案进行评分。 谢谢