【问题标题】:Duplicate Android database from another application?从另一个应用程序复制 Android 数据库?
【发布时间】:2010-02-12 17:38:44
【问题描述】:

我有同一个应用程序的两个版本。

当人们从免费版本升级到付费版本时,我希望将免费数据库复制到专业数据库位置。

如果数据库文件属于另一个应用程序,我是否可以访问它本身?
该文件甚至属于应用程序还是通常可以通过文件系统访问?

最后,如何在不硬编码的情况下获取数据库文件的路径?

【问题讨论】:

  • 你有什么解决办法吗?请帮帮我?

标签: database android sqlite


【解决方案1】:

有什么方法可以访问 数据库文件本身,如果它属于 另一个应用程序?

仅当两个应用程序共享一个用户 ID 并使用相同的签名密钥进行签名时。

文件是否属于 应用还是一般 通过文件系统访问?

它可以通过文件系统 (/data/data/your.package.goes.here/databases/whatever-you-called-the.db) 使用,但同样,前提是两个应用程序共享一个用户 ID 并使用相同的签名密钥进行签名。

最后,我如何获得通往 没有硬编码的数据库文件?

您必须对其进行硬编码,或者至少对变量组件(包名称和数据库名称)进行硬编码,这两者您在编译时就已经知道了。

【讨论】:

  • 我可以使用 Intent 来请求副本吗?
  • 可能。没有什么内置的。但是,如果没有任何数据库句柄打开,它只是一个文件,因此您可以根据广播 Intent 或其他内容将副本复制到 SD 卡。
  • 我想我要在我的免费版本中创建一个小活动,专门用于传输。我将带着这个意图启动activityforresult,它将数据库复制到公共存储,专业版将在返回result_OK时导入它,就是这样。当我得到它的工作时,我会发布一个完整的解决方案。
【解决方案2】:

数据库文件在哪里?如果它在 SD 卡上,那么您可能可以直接访问它。如果您在私有应用程序目录中创建了数据库,那么您将无法触摸它。您可以在免费版应用中定义一个内容提供程序,专业版可以使用它来提取存储在数据库中的所有信息。

【讨论】:

  • 我正在使用 android 内置的 SQLite 数据库支持。应用程序管理数据库文件和位置。
猜你喜欢
  • 2011-06-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-19
  • 1970-01-01
  • 2012-05-29
相关资源
最近更新 更多