MISE À JOUR : La méthode décrite ci-dessous repose sur les éléments suivants android:sharedUserId
, déprécié à partir du niveau 29 de l'API (Android 10).
Vous pouvez certainement partager une seule base de données entre deux applications.
Pour partager des données entre applications (à condition qu'elles soient émises par le même éditeur), vous devez spécifier un identifiant d'utilisateur partagé dans le fichier AndroidManifest.xml des deux applications.
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:sharedUserId="my.app" ... >
(C'est non documenté, mais l'identifiant de l'utilisateur partagé doit être une chaîne de caractères avec au moins un séparateur de points).
Le reste est facile, et vous n'avez pas besoin de vous embêter avec le chemin de la base de données. Il suffit d'utiliser le même adaptateur de base de données dans les deux applications. Dans l'application qui héberge la base de données, appelez le DBAdapter avec le contexte natif.
DBadapter hostDBAdapter = new DbAdapter(getApplicationContext());
performerDBadapter.open();
Dans la seconde application, accédez à la base de données avec le contexte de l'application d'hébergement de la base de données.
Tout d'abord, définissez le contexte partagé :
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;
}
Ensuite, ouvrez le DBAdapter avec le contexte partagé :
DbAdapter sharedDBadapter = new PerformerDbAdapter(sharedContext);
sharedDBadapter.open();
Enfin, si votre base de données existe avant la définition de l'identifiant d'utilisateur partagé dans le manifeste, vous devrez désinstaller/réinstaller les applications sur un appareil physique pour ne pas vous bloquer dans votre base de données (erreur sqlite 14). L'émulateur, en revanche, pourrait s'avérer plus indulgent. En conclusion, si vos applications sont publiées sur le marché Android, la définition d'un identifiant d'utilisateur partagé après coup ne fonctionnera pas.
J'espère que cela vous aidera.
1 votes
groups.google.com/group/Android-developers/browse_thread/thread/ Ce fil de discussion traite d'un sujet similaire ; voyez si cela peut vous aider.