2016-07-15 58 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不起作用。

希望這會有所幫助。