0

電話に 5 つ以上のアプリケーションがあり、コンテンツ プロバイダーとデータを共有する必要があります。各アプリケーションは最初にインストールされ、テーブルと URI を作成する必要があります。そのため、すべてのアプリケーションでマニフェストでプロバイダーを宣言し、アプリケーションにプロバイダーを初期化する権限を与える必要があります。 . しかし、Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER error, how can I manage this problem? が表示されました。

4

2 に答える 2

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 が存在しない場合、それはユーザーの責任です。

于 2013-01-19T22:30:06.127 に答える