[英]Facebook EOFException while posting through Broadcast Receiver
在我的應用程序中,我試圖在將來發布我的Facebook狀態,並實現我已創建的廣播接收器。 我使用PendingIntent和AlarmManager通過MainActivity進行調用。 如果時間間隔在1或2分鍾之間,則狀態將成功發布。 但是如果時間跨度大於5分鍾,那么。 作為響應,我從Facebook的Request類中獲取了錯誤代碼為-1
的java.io.EOFException
。
請讓我知道如何稍后在后台發布狀態消息。 我也嘗試過服務,但在那我也得到了同樣的答復。
提前致謝。
我終於找到了解決該問題的方法,但是對於我來說似乎可行,但是不知道這是否是系統的方法。 早些時候,我試圖將狀態發布到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只是一個沒有任何用戶界面的虛擬活動,它的主要目的是靜默登錄用戶並通過newMeRequest
獲取用戶信息, newMeRequest
萬一以確保我們有效,我試圖跳過newMeRequest
但是后來我再次得到java.io.EOFExcepion
並且在此方法內,我完成了編碼以發布狀態,並且即使在45分鍾的時間范圍內也成功發布了該狀態。
如果對您有幫助,請嘗試此過程並為該答案評分。 謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.