2016-07-15 47 views
0

我想分享两个应用之间的数据库文件中的两个应用程序之间共享文件,假设我有一个应用程序和App B.应用一种我创建数据库和它使用的应用程序A和应用B以及。但是,当我卸载我的应用程序我的数据库也被删除,但我想保留该数据库,如果我的应用程序B安装,如果两者都被删除它应该从存储中删除数据库。我想保持我的数据库始终在内部存储上。安卓:无需使用外部存储

+0

不可能的数据库是专用.. !! –

回答

1

@ R.Pradhan请尝试内容提供直通发送数据。应用A到应用B使用数据库发送数据。

+0

内容提供商,你的意思是? –

+0

@KenRatanachaiS。请点击此链接并阅读。 “http://www.compiletimeerror.com/2013/12/content-provider-in-android.html” – mujjuraja

+0

@KenRatanachaiS。内容提供者通过数据发送来接收。应用程序A到应用程序B使用数据库 – mujjuraja

0

@ R.Pradhan ..是的,你可以在两个应用程序之间但共享一个数据库,有一个条件。

如果你想使用的应用程序之间的数据(只要它们由同一发行人发行的),就需要在这两个应用程序的AndroidManifest.xml中指定一个共享的用户ID。

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="my.app" ... > 

共享用户标识需要是至少有一个点分隔符的字符串。

其余是容易的,你不需要更动数据库路径。只需在两个应用程序中使用相同的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 ,您将需要卸载/重新安装物理设备上的应用程序,以免将自己锁定在数据库之外(sqlite错误14)。另一方面,模拟器可能证明更宽容。最重要的是,如果您的应用在Android市场上发布,则在事后才能设置共享用户ID不起作用。

希望这会有所帮助。