2015-05-18 26 views
1

我有一個活動的問題onStop打破了我的OAuth身份驗證過程。Android OAuth的實現使得接收份額活動停止

首先是關於我的應用程序的背景下,小的解釋:我有這個活動

(可以稱之爲receiveSharedDataActivity),其中處理傳入的數據,該數據是從其他應用程序發送。此活動使用Android Developer站點中的以下示例進行:http://developer.android.com/training/sharing/receive.html

我的應用程序要求用戶使用電子郵件和密碼或使用Facebook或Twitter OAuth登錄進行登錄。用戶可能從未打開該應用程序,因此尚未登錄。 (可能性很小,但仍然會發生的。)

問題(挑戰):當用戶決定分享一些數據,我的應用程序,但還沒有登錄

所以,我告訴他了receiveSharedDataActivity中的3個登錄選項(電子郵件,Facebook和Twitter)使用片段。這樣他可以首先驗證自己,然後可以處理數據。當用戶選擇使用Facebook登錄Twitter OAuth登錄選項時,他將被重定向到Facebook或Twitter的新活動,他需要登錄並允許我的應用訪問其用戶數據。一切順利到這一點。因爲當用戶被重定向到這個新活動時,receiveSharedDataActivity會自動停止使用onStop,因爲用戶不再可見。當用戶通過Facebook或Twitter的活動登錄併發送回receiveSharedDataActivity時,不再有receiveSharedDataActivity,因爲它已停止。因此,用戶最終會看到用戶決定共享數據的另一個應用。

問題:

如何防止被停止,當用戶在Facebook或Twitter登錄活動在receiveSharedDataActivity

我期待着您的解決方案,因爲我非常堅持這個問題。

回答

0

好消息!我能解決這個問題。所有這一次,我認爲它在啓動receiveSharedDataActivity時必須通過正確的Intent標誌。傻我...

問題是我的receiveSharedDataActivity有AndroidManifest.xml中的noHistory:true參數集。我需要這個,因爲顯然我不希望這個活動被添加到後臺。但是,noHistory參數使得我的活動直接在用戶不再可見活動後自行銷燬。 OAuth登錄活動開始時會發生什麼情況。所以當然,在OAuth登錄活動完成後沒有任何活動返回,因爲receiveSharedDataActivity已被簡單地銷燬。

當我刪除了noHistory參數後,該活動並沒有使其自身不再存在,而且很好地稱爲onRestart方法,我現在可以處理Oauth過程的其餘部分。我可以通過在開始新活動後立即致電finish()來阻止將活動添加到堆棧中。這種方式會破壞自身,不會被添加到後臺堆棧中。