在我的应用我想后我的Facebook状态在未来的时间,来完成我已经创建了一个广播接收器。我使用PendingIntent和AlarmManager通过MainActivity进行调用。如果时间间隔在1或2分钟之间,则状态将成功发布。但是如果时间跨度大于5分钟,那么。作为响应,我从Facebook的Request类收到带有错误代码的错误。java.io.EOFException
-1
请让我知道如何稍后在后台发布状态消息。我也尝试过服务,但在那我也得到了同样的答复。
提前致谢。
我终于找到了解决该问题的方法,但是对于我来说似乎可行,但是不知道这是否是系统的方法。早些时候,我试图将状态发布在中,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
。
FutureActivity.java
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只是一个没有任何UI的虚拟活动,它的主要目的是静默登录用户并newMeRequest
以防万一以获取用户信息以确保我们有效,我试图跳过,newMeRequest
但后来我又进入java.io.EOFExcepion
和使用此方法,我已经完成了编码以发布状态,并且即使在45分钟的时间范围内也成功地发布了状态。
如果对您有帮助,请尝试此过程并评价此答案。谢谢
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句