電話に 5 つ以上のアプリケーションがあり、コンテンツ プロバイダーとデータを共有する必要があります。各アプリケーションは最初にインストールされ、テーブルと URI を作成する必要があります。そのため、すべてのアプリケーションでマニフェストでプロバイダーを宣言し、アプリケーションにプロバイダーを初期化する権限を与える必要があります。 . しかし、Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER error, how can I manage this problem? が表示されました。
2 に答える
コンテンツ プロバイダーとデータを共有する必要があるアプリケーションが電話に 5 つ以上あります
ほとんどの場合、これは良い考えではありません。
したがって、すべてのアプリケーションで、プロバイダーを初期化する権限をアプリケーションに与えるために、マニフェストでプロバイダーを宣言する必要があります
それはうまくいきません。
しかし、インストールエラーが発生しました: INSTALL_FAILED_CONFLICTING_PROVIDER エラー
それがうまくいかない理由です。
どうすればこの問題を管理できますか?
<provider>
差し当たり、これが良いアイデアであると仮定すると、としてマークされたアプリを出荷できますandroid:enabled="false"
。次に、最初のアプリは にアクセスしようとしContentProvider
、他の誰も を設定していないと判断するとContentProvider
、独自のアプリを有効にできます(PackageManager
およびを参照setComponentEnabledSetting()
)。
したがって、5 つのアプリケーションの名前が A、B、C、D、および E であるとします。A が最初にインストールされます。ユーザーがそれを実行すると、A は が存在しないことを確認ContentProvider
し、自身を有効にします。ユーザーは B、C、D、および E のインストールに進み、それらはすべて A を使用ContentProvider
してデータを保存します。ユーザーは A をアンインストールします。B、C、D、および E は、A がアンインストールされるとデータがなくなるため、すべてのデータを失います。おそらく、ユーザーはこれを高く評価しないでしょう。
ContentProvider
それが良い考えである唯一のシナリオは、B、C、D、および E が完全に A に依存することになっている場合です。その場合、B、C、D、および E は常に独自の を必要としませんA を使用し、A が存在しない場合、それはユーザーの責任です。