2

重複の可能性:
2 つの Android アプリ間で SQLite データベースを共有しますか?

私はSQLiteデータベースを操作して、それを開いて、そこからデータを取得し、データを挿入しようとしていますが、これは完璧にやりましたが、同じアプリケーションで作成したsqliteデータベースを使用していますが、で作成された他のデータベースでそうしようとしています他のアプリケーション。

次のようにデータベースを開こうとしました:

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

しかし、うまくいきませんでした。これどうやってするの?

4

3 に答える 3

4

別のアプリケーションのデータベースを開くだけではありません。;)

真剣に、明らかなセキュリティ上の理由 (およびその他のリソース上の理由) から、デフォルトではそれを行うことはできません。ただし、明示的に必要な場合は、あるアプリケーションから他のアプリケーションにデータを公開できます。これは、ContentProvider を実装するか、2 つのアプリケーションを同じユーザー ID/権限で具体的に実行することによって行われます。

外部アプリケーションにデータへのアクセスを許可する場合のより一般的なアプローチは、ContentProvider を使用することです。

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

より高度なアプローチ、およびデータを共有する必要がある「2つのアプリ」の両方を制御し、他のアプリがデータにアクセスすることを許可しない場合に使用するアプローチは、ユーザーIDと処理する。それが整ったら、データを直接共有できます。

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

于 2012-10-17T15:06:50.217 に答える
1

デフォルトでは、Sqlite db は各プロジェクトのプライベート フォルダーに作成され、他のプロジェクトでは非表示のままになります。ただし、Sqlite データベースを SD カードに保存できるため、他のすべてのプロジェクトで開くことができます。

データベースファイルをSDカードにコピーできますか?

于 2012-10-17T15:12:51.790 に答える
-2

データベースは、アプリケーションごとにプライベート ディレクトリに格納されます。暗号化されている場合もあります。スーパーユーザー権限で試してみてください。

于 2012-10-17T15:01:46.553 に答える