2012-04-04 54 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

相关问题