2012-10-17 3 views
1

Possible en double:
Share SQLite database between 2 android apps?Comment travailler avec la base de données sqlite à partir d'une autre application dans android?

Je suis en train de travailler avec des bases de données SQLite, ouvrir, récupérer des données à partir, insérez des données, je l'ai fait Thit parfaitement, mais avec des bases de données SQLite J'ai créé dans la même application, mais j'essaye de le faire avec d'autres bases de données créées dans d'autres applications.

J'ai essayé d'ouvrir la base de données comme ceci:

String DB_PATH= "/data/data/my.sqlitemanager/databases/"; 
String DB_NAME = "commments"; 
SQLiteDatabase database = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, SQLiteDatabase.OPEN_READONLY); 

Mais cela n'a pas fonctionné. Comment puis-je faire ceci?

+0

Vous pouvez partager des bases de données avec ids utilisateurs partagés: http://stackoverflow.com/questions/7053809/share-sqlite-database-between-2-android-apps – mjn

Répondre

-2

La base de données est stockée dans un répertoire privé pour chaque application. Parfois, il est même crypté. Peut-être essayer avec les autorisations de super-utilisateur.

4

On n'ouvre pas simplement la base de données d'une autre application. ;)

Sérieusement, pour des raisons de sécurité évidentes (et d'autres raisons de ressources), vous ne pouvez pas le faire par défaut. Vous pouvez cependant exposer les données d'une application à d'autres applications si vous le souhaitez EXPLICITEMENT. Cela est effectué soit: en implémentant un ContentProvider, soit en exécutant spécifiquement vos deux applications avec le même ID utilisateur/autorisations.

L'approche la plus courante, si vous souhaitez que n'importe quelle application externe ait accès à vos données, consiste à utiliser ContentProvider.

http://developer.android.com/guide/topics/providers/content-providers.html

L'approche la plus avancée, et celui que vous souhaitez utiliser si vous contrôlez à la fois des « deux applications » qui ont besoin de partager les données, et que vous souhaitez désactiver toute autres applications d'accéder à votre données, serait de spécifier l'ID utilisateur et le processus. Une fois en place, vous pouvez partager les données directement.

http://developer.android.com/guide/topics/manifest/application-element.html#proc

+0

Merci beaucoup pour votre réponse rapide. Oui, je sais qu'il y a un problème de sécurité, mais j'essaie d'accéder à une base de données que j'ai créée dans une autre application, en fait je voulais juste faire une API sqlite manager, je peux passer le chemin de la base et le nom de la base à, et il va simplement l'ouvrir et travailler avec. – user1753461

1

Par défaut SQLite db est créé dans le dossier privé de chaque projet, qui reste caché pour d'autres projets. Cependant, vous pouvez sauvegarder votre base de données Sqlite dans une carte SD, elle sera donc ouverte pour tous les autres projets.

Is it possible to copy database file to SD card?

Questions connexes