webentwicklung-frage-antwort-db.com.de

Inhaltsanbieter INSTALL_FAILED_CONFLICTING_PROVIDER (Installieren des Inhaltsanbieters als separate apk)

Ich habe zwei Anwendungen, die denselben Inhalteanbieter verwenden, aber ich kann nicht denselben Inhalteanbieter in beiden Anwendungen verwenden. Es wird der Fehler INSTALL_FAILED_CONFLICTING_PROVIDER angezeigt. Also habe ich meinen Content-Provider in ein 3. .apk gestellt und dieses aus zwei Anwendungen genutzt und es funktioniert gut.

Nun ist das Problem: Der Content Provider apk muss installiert sein, bevor eine der beiden Apps auf dem Gerät installiert werden kann. Andernfalls wird angezeigt, dass der Provider während der Installation keinen Fehler gefunden hat. 

Wie kann ich also sicherstellen, dass das Provider-APK installiert ist, bevor eines der anderen APKs installiert wird? 

Gibt es eine Möglichkeit, den Content Provider apk mit den beiden anderen apks getrennt zusammenzuführen, so dass sie zusammen als zwei Anwendungen installiert werden und der Fehler INSTALL_FAILED_CONFLICTING_PROVIDER nicht angezeigt wird? 

Ich muss den Inhaltsanbieter apk mit beiden Anwendungen zusammenführen, da der Benutzer möglicherweise nicht beide Anwendungen oder beide auf einem einzigen Gerät installiert.

37
Imon

Eine Lösung, die ich mir vorstellen kann, ist, den Inhalteanbieter zu einem Teil der Anwendungen mit intern unterschiedlichen Paketen zu machen und ihn mit Android zu exportieren: exported = true. Beide verwenden jedoch möglicherweise denselben Code.

Zu Beginn der Anwendung prüfen Sie, ob der andere Inhaltsanbieter auf dem Gerät vorhanden ist, wenn Sie ihn dort verwenden, andernfalls wenden Sie sich an den lokalen Inhaltsanbieter. Wenn die andere Anwendung installiert wird, kann sie dieselbe Überprüfung durchführen.

Um Ihren cotent Provider vor allen anderen zu schützen, können Sie eine benutzerdefinierte Berechtigung definieren, um ihn zu schützen, sodass Ihre Anwendungen ihn nur verwenden können, oder Sie können auch eine benutzerdefinierte Authentifizierung wie einen geheimen Schlüssel für den Zugriff auf den Inhaltsanbieter verwenden. Sie können diesen Authentifizierungscode in allen Methoden des Inhaltsanbieters verwenden. 

13
Naresh

Sie können das Problem lösen, indem Sie den Wert von Android:authorities in Ihrer AndroidManifest.xml-Datei ändern. Der Grund für den Fehler ist, dass eine andere auf Ihrem Gerät installierte Anwendung bereits denselben Wert für Android:authorities verwendet.

37
Ali

So beheben Sie diesen Fehler:Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER

Ändern Sie den Wert vonAndroid:authoritiesin Ihrer AndroidManifest.xml -Datei. Eine andere auf Ihrem Gerät installierte Anwendung verwendet bereits denselben Wert für Android: Berechtigungen.

9
Elenasys

Sie verwenden ein einheitliches Datum wie die Registrierungsnummer der Facebook-API oder ähnliches in Ihrer Manifestdatei (AndroidManifest.xml) für beide Programme: für die bereits installierten Programme und für die Sie versuchen, sie zu installieren. Du brauchst:

  1. Versuchen Sie etwas zu finden und prüfen Sie, ob es für Ihr aktuelles -Programm ist:

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

  1. Prüfen Sie, ob in einem anderen Programm keine Dubletten vorhanden sind.
2

Dies bedeutet, dass Ihr Telefon bereits einen Anbieter mit denselben Berechtigungen hat, der von einer anderen Anwendung registriert wurde (dies könnte Ihr anderes Beispiel sein). Ändern Sie die Berechtigungen Ihres Anbieters, d. H. Android:authorities, und Sie sind bereit zu gehen.

0
Nishant Shah