2012-04-04 81 views
0

我有應用程序A和B(以及某天的C)。兩者都需要讀/寫訪問某些數據。它不敏感,但同時我不希望它在用戶面前(如他們的下載文件夾或任何東西)。我還需要支持帶或不帶SD卡的手機。我也不知道應用程序的安裝順序(A然後B或B然後A)。什麼是跨應用程序存儲數據的最佳位置

什麼是最好的方式來存儲這個?

SharedPreferences似乎是一個好主意,但從我所瞭解的情況來看,它們只能用共享包名稱來定義,如果該包爲A,則在安裝A之前,B將無法使用它們。

內部存儲是我的下一個想法,但我不知道什麼文件夾適合這個。

編輯 - 明確要求:

應用程序A,B和C都使用相同的數據,需要在它們之間共享。無論先安裝哪個應用程序,都應該創建這些數據,然後所有其他應用程序都可以訪問它沒有任何應用程序需要安裝任何其他應用程序。

+0

也許你應該在一個公共數據庫使用和存儲數據。 http://developer.android.com/guide/topics/data/data-storage.html – 2012-04-04 17:39:53

+0

從該頁面:'您創建的任何數據庫都可以通過名稱訪問應用程序中的任何類,但不在應用程序之外。或者還有另一種我錯過的機制? – Hounshell 2012-04-04 18:18:25

回答

3

除了應用程序自己的內部緩存/文件目錄之外,您無法訪問內部存儲器(除非您的設備已被root用戶)進行跨應用程序文件訪問。

在你的情況下,我可以推薦兩個選項。

  1. 使用ContentProviders將應用程序的數據提供給其他應用程序。
  2. 使用External Storage(SD卡)保存數據(而不是應用程序的緩存目錄 ),讓你的應用程序的讀/寫分別
+0

我打算回答使用ContentProvider,但@Waqas已經提出了它,所以我只是同意。 – mah 2012-04-04 17:50:00

+0

因此,每個應用程序(A,B和C)都提供一個內容提供者?然後,如果用戶安裝應用程序C然後安裝應用程序B,B如何知道使用C的提供程序? – Hounshell 2012-04-04 18:21:20

+0

您需要進行查詢才能從其他應用程序的內容提供者讀取數據。所以當查詢成功時,它會返回你**遊標**,否則** null **。這就是你如何知道哪些應用的數據可用或不可用。另一種方法是使用PackageManager並驗證您所需的應用程序是否已安裝/可用於設備中。 – waqaslam 2012-04-04 18:27:58

相關問題