ContentProvider
私は、最初にそれを使用するアプリケーションと同じプロジェクト ファイルで開発したカスタム クラスを持っています。ただし、このアプリケーションは の多くのユーザーの 1 人に過ぎないことを意図しているためContentProvider
、別のプロジェクトに分割したいと考えています。コードは Android PDK で開発されていますが、将来のクライアントは SDK (カスタム SDK、または SDK プラグインなど) で開発される可能性があります。
私が直面している問題は、ContentProvider
CONTENT_URI、列名、およびクエリから返された値を解釈するために使用されるいくつかの定数など、クラスの定数に関するものです。もちろん、これらは別のプロジェクトからアクセスすることはできません。この時点で3つのオプションがあるようです:
1) 問題を無視し、ユーザー アプリケーション コードに値を直接入力します。ただし、これによりアクセスがContentProvider
醜くなります。コードを保守可能に保つために、一部の列を整数ではなく文字列でエンコードするために、いくつかの列を変更する必要があります。
2) 定数を別のクラスに入れ、ContentProvider
. 私はコードを複製するのが好きではありません。各ターゲット アプリでこのコードの複製を保持すると、いくつかの項目を維持するのが少し煩わしくなります。
3) 私が PDK で開発しているという事実を悪用し、 で説明されているようにプラットフォーム ライブラリを公開しますvendor/sample/frameworks/PlatformLibrary
。ただし、プラットフォーム ライブラリにはマニフェスト ファイルがありません。つまり、私の理解が正しければ、ContentProvider
. これは、 の「通常の」プロジェクトが 1 つ必要ContactProvider
であり、定数値を持つクラスを公開するためだけに別のプロジェクトが必要であることを意味します。これはとても間違っているように感じます。
複数のサブテーブルを持つ ContentProvider のクラス構造 での答えは、オプション (1) を暗示しているように思われます。
ただし、これを行うための別のきちんとした整頓された方法を見逃したのではないでしょうか? 私は PDK で開発していることを念頭に置いて、ContentProvider
ストック Google プロバイダーと同じように使用できるようにしたいと考えています。