3

追加のデータベースとしてアプリにコンテンツを追加したいと考えています。それらをapkとコンテンツプロバイダーに配置して、Google Playから直接更新できるようにするか、新しいdbファイルをアプリに直接ダウンロードできるようにする必要があります.

content-provider/apk メソッドに関する私の問題は、それらすべてを android マニフェストで宣言する必要があることです。また、複数のデータベースが何百もある可能性があるため、ユーザーがいくつかしか持っていないか、まったく持っていません。

マニフェストを動的に生成する方法がない限り? または、マニフェストの外部でコンテンツ プロバイダーをロードしますか?

ありがとう

4

2 に答える 2

5

これを行う最もクリーンな方法は、すべての db ファイルに対して1 つの一意の ContentProviderを用意することだと思います。

データベースの選択に合わせてURIを作成する必要があります。

例えば ​​:content://com.your.package/a_db_file/something/things/5

次に、ContentProvider を実装するときに、Uri を解析してa_db_fileセグメントを取得し、対応する db ファイルを開き、残りのセグメントに従って必要な作業を行います。

のようなメソッドが必要になるかもしれませんgetCorrectDb(String a_db_file)。このメソッド内で、必要な db ファイルに適切に一致するsqlLiteOpenHelperを正しく呼び出す必要があります。

UriMatcher もご覧ください。役に立つかもしれません。:)

最後に、次のようなものが必要です。

@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {

    // TODO : Parse uri to get a_db_file string.

    SQLiteDatabase database = getCorrectDb(a_db_file);

    // TODO : get cursor from db according to other segments of uri.

    return cursor.

}
于 2012-10-31T09:27:00.667 に答える
1

1 つのコンテンツ プロバイダーを使用して物事をシンプルにし、「データベースの接続」SQL コマンドを利用します。

于 2013-05-31T17:27:55.080 に答える