他のアプリでデータベースが作成されているかどうかを確認することはできますか? 2 つのアプリに共通のデータベースが必要です。1 つのアプリが既に db を作成している場合、2 番目のアプリは最初のアプリの db を使用する必要があります (つまり、新しいアプリを作成しないでください)。このために、その特定の共通データベースが作成されているかどうかを確認する方法はありますか? これについて私を助けてください。
5 に答える
This is not as easy as you may think. Even If you would definetly know, that your other app has created the db already, there is still difficulty in querying it. As any Db belongs to the app which created it, only this app usually gets access to it. Good news is that there is is a mechanism for that, called ContentProvider. With it you are able to share the db-infos between apps, but it takes some effort to implement this.
次のコードを試してください
DB_PATH = "/data/data/THE_PACKAGE_NAME/databases/";
DB_NAME="YOUR_DB_NAME";
File dbFile = new File(DB_PATH + DB_NAME);
if(dbFile.exists()){
/* YOUR CODE HERE*/
}
dbを作成する前に、パッケージ名を使用して両方のアプリケーションで上記のチェックを実行してください。
:)
あなたにとって最良のことは、sdcard(またはrootなしで他のユーザーがアクセスできる領域)を使用することですこのスレッドを見てください
安全ではないことは承知していますが、この種の問題には最適です。1つのアプリケーション(最初にインストールされたアプリケーション)がSDカードにデータベースを作成します。もう1つは、ファイル(db)がすでに存在するかどうかを確認し、既存のdbから読み取ります。
データベースは の下に保存され/data/data/your.applications.package/databases
ます。通常、この場所にアクセスできるのは、Android OS がアプリ用に作成したユーザーだけです。デバイスがルート化されていない限り、他のユーザーはこの場所にアクセスできません。その後、どのユーザーも電話機の任意の場所にアクセスしてデータを操作できます。
データベースがこの場所に存在するかどうかを確認できます
これを直接確認できますAndroid Access Another App's Database
データベース チュートリアルで説明されているように、SQLiteOpenHelper を使用してデータベースのバージョン管理を制御する必要があります。
残念ながら、SQLiteOpenHelper はローカルの app-directory でのみ機能しますが、sqliteopenhelper-with-full-qualified-db-path-name で説明されているように、sd カード上の別のディレクトリを使用するように指示できます。