2013-10-05 64 views
6

我有幾個實現某些登錄邏輯的應用程序。如果讓我們說一個應用程序記錄到[email protected]我希望所有這些應用程序記錄到[email protected]。如果我註銷,我希望所有的應用程序都做同樣的事情。但我不想立即做同樣的事情。應用程序本身可以處理它,但它需要知道是否有其他應用程序已經登錄,如果是,只需登錄與此應用程序相同的電子郵件地址。所以我需要知道其他應用程序記錄的電子郵件地址是什麼。我需要存儲一個字符串。在應用程序之間共享少量數據

首先,我在考慮SharedPreferences,但這是一個相當糟糕的主意,因爲還有其他選項(並且stackoverflow充滿了進程之間的SharedPreferences用法的錯誤示例)。儘管它我嘗試過。在所有應用上設置sharedUserId,名爲createPackageContext,並最終嘗試獲取偏好設置。但我無法讀取它。總是我得到空,即使我使用Context.Mode_WORLD_READABLE - 這是不贊成的方式。

好的,經驗教訓不要使用SharedPreferences(我想)。但是現在我需要的是將單個字符串存儲在其他應用可以讀取的地方。

也許我應該使用ContentProvider?但認真......爲一個字符串? 還有什麼其他的選擇?我確信,對於如此簡單的操作,我真的不需要ServiceContentProvider,但我實際上並不知道如何做到這一點。

+0

+1非常好的問題。你已經解釋了你想做得很好。您還展示了您在嘗試尋找自己的解決方案時考慮的選項。 –

+0

我不知道除了共享文件(yeuch,fragile,insecure)或ContentProvider以外,還有其他的好辦法。它認爲'SharedPreferences'已經把共享分享出來了,但也許有一天...... – Simon

回答

0

您可以使用廣播接收器。當數據在應用程序A中發生變化時,您只需嚮應用程序B發送廣播,然後應用程序B就可以在後臺處理數據,並根據需要進行存儲。這可能有點過度殺戮,並且可能有更好的方法來做到這一點,但它會起作用。

+0

但我不確定是否所有的應用程序都在運行。廣播不會傳送到用戶從設置中關閉或停止的應用程序。 – sennin

相關問題