web-dev-qa-db-ja.com

コンテンツプロバイダーINSTALL_FAILED_CONFLICTING_PROVIDER(コンテンツプロバイダーを個別のAPKとしてインストール)

同じコンテンツプロバイダーを使用する2つのアプリケーションがありますが、両方のアプリケーションに同じコンテンツプロバイダーを配置できません。INSTALL_FAILED_CONFLICTING_PROVIDERエラーが表示されます。コンテンツプロバイダーを3番目の.apkに配置し、2つのアプリケーションからこれを使用したところ、問題なく動作しています。

今問題は-これらの2つのアプリのいずれかをデバイスにインストールする前に、コンテンツプロバイダーapkをインストールする必要があります。それ以外の場合は、インストール中にプロバイダーが見つかりませんというエラーが表示されます。

それで、他のapkがインストールされる前に、プロバイダーapkがインストールされていることをどのように確認できますか?

コンテンツプロバイダーapkを他の両方のapkと個別にマージする方法はありますか?それらは2つのアプリケーションとして一緒にインストールされ、INSTALL_FAILED_CONFLICTING_PROVIDERエラーを表示しませんか?

ユーザーが両方のアプリケーションをインストールできないか、1つのデバイスに両方をインストールする可能性があるため、コンテンツプロバイダーのapkと両方のアプリケーションをマージする必要があります。

37
Imon

私が考えることができる1つの解決策は、コンテンツプロバイダーを内部的に異なるパッケージIDを持つ両方のアプリケーションの一部にし、Android:exported = trueを使用してそれをエクスポートすることです。ただし、どちらも同じコードを使用している可能性があります。

アプリケーションの開始時に、デバイスに他のコンテンツプロバイダーが存在するかどうかを確認します。存在する場合はそれを使用し、それ以外の場合はローカルコンテンツプロバイダーにフォールバックします。他のアプリケーションをインストールすると、同じチェックを実行できます。

他のすべてのユーザーからコンテンツプロバイダーを保護するには、それを保護するためのカスタムアクセス許可を定義して、アプリケーションがそれを使用できるようにするか、シークレットキーなどのカスタム認証を配置してコンテンツプロバイダーにアクセスすることもできます。この認証コードは、コンテンツプロバイダーのすべてのメソッドで使用できます。

13
Naresh

Android:authoritiesファイルのAndroidManifest.xmlの値を変更することで解決できます。エラーの理由は、デバイスにインストールされている別のアプリケーションがAndroid:authoritiesに同じ値をすでに使用しているためです。

37
Ali Ashraf

このエラーを解決するには:Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER

Android:authoritiesAndroidManifest.xmlファイル内デバイスにインストールされている別のアプリケーションがすでにAndroid:authoritiesに対して同じ値を使用しています。

9
Jorgesys

両方のプログラムのマニフェストファイル(AndroidManifest.xml)で、Facebook API登録番号などの1つのunicデータを使用します。これは、すでにインストールされているものと、インストールしようとできないものです。必要なもの:

  1. このようなものを見つけて、現在のプログラムでそれを確認してください。

Android:authorities = "com.facebook.app.FacebookContentProvider23473465463573466" Android:name = "com.facebook.FacebookContentProvider" Android:exported = "true" />

  1. インストールしようとしているプログラムの場合は、他のプログラムと重複していないかどうかを確認してください。
2

それはあなたの電話がすでに別のアプリケーションによって登録された同じ権限を持つプロバイダーを持っていることを意味します(あなたの他の例かもしれません)プロバイダーの権限を変更してくださいAndroid:authoritiesとあなたは大丈夫です。

0
Nishant Shah