您当然可以在两个应用程序之间共享一个数据库。
为了在应用程序之间共享数据(只要它们是由同一个发行者发布的),您需要在这两个应用程序的AndroidManifest.xml中指定一个共享的用户id。
(这是没有文档的,但是共享的用户id需要是至少一个点分隔符的字符串)
其余的操作都很简单,您不需要在数据库路径上乱搞。只需在两个应用程序中使用相同的DBAdapter即可。在承载数据库的应用程序中,使用本机上下文调用DBAdapter。DBadapter hostDBAdapter = new DbAdapter(getApplicationContext());performerDBadapter.open();
在第二个应用程序中,使用数据库托管应用程序的上下文访问数据库。
首先,定义共享上下文:Context sharedContext = null;
try {
sharedContext = this.createPackageContext("replace.with.host.package.name", Context.CONTEXT_INCLUDE_CODE);
if (sharedContext == null) {
return;
}
} catch (Exception e) {
String error = e.getMessage();
return;
}
然后使用共享上下文打开DBAdapter:DbAdapter sharedDBadapter = new PerformerDbAdapter(sharedContext);sharedDBadapter.open();
最后,如果在清单中设置共享用户id之前就存在数据库,则需要卸载/重新安装物理设备上的应用程序,以免将自己锁在数据库之外(Sqliterror 14)。另一方面,仿真器可能会被证明更宽容。总之,如果你的应用程序是在Android市场上发布的,那么在事后设置一个共享的用户ID是行不通的。
希望这能帮上忙。