J'ai plus de 5 applications sur le téléphone dont ils ont besoin pour partager des données avec le fournisseur de contenu, et chaque application installée en premier doit créer une table et une URI, donc dans toutes les applications pour donner l'autorité d'application pour initialiser le fournisseur. Mais j'ai une erreur d'installation: INSTALL_FAILED_CONFLICTING_PROVIDER erreur, comment puis-je gérer ce problème?erreur de fournisseur de contenu android INSTALL_FAILED_CONFLICTING_PROVIDER
Répondre
I have more than 5 applications on the phone that they need to share data with content provider
Très probablement, ce n'est pas une bonne idée.
so in all applications I should declare provider in manifest, to give the application authority to initialize provider
Cela ne fonctionnera pas.
But I got Installation error: INSTALL_FAILED_CONFLICTING_PROVIDER error
C'est pourquoi cela ne fonctionnera pas.
how can I manage this problem ?
Si l'on suppose pour le moment que ce fut une bonne idée, vous pouvez expédier l'application avec le <provider>
marqué comme android:enabled="false"
. Ensuite, la première application pourrait essayer d'accéder au ContentProvider
, et quand il détermine que personne d'autre n'a configuré le ContentProvider
, il peut activer le sien (voir PackageManager
et setComponentEnabledSetting()
). Supposons donc que vos cinq applications s'appellent A, B, C, D et E. A est installé en premier. L'utilisateur l'exécute, A voit qu'il n'y a pas ContentProvider
, et permet le sien. L'utilisateur procède à l'installation de B, C, D et E, et tous utilisent le ContentProvider
de A pour stocker leurs données. L'utilisateur désinstalle maintenant A. B, C, D et E vont perdre toutes leurs données, que leurs données disparaissent lorsque A est désinstallé. L'utilisateur, selon toute vraisemblance, n'appréciera pas cela.
Le seul scénario dans lequel c'est une bonne idée est si B, C, D et E sont supposés dépendre entièrement de A. Dans ce cas, B, C, D et E n'ont pas besoin de leur propre ContentProvider
, car ils peuvent toujours utiliser A, et si A n'existe pas, c'est la faute de l'utilisateur.
Vous devez définir fournisseur dans le manifeste de toutes les applications comme ceci:
android:authorities="com.app.SomeContentProvider${applicationId}"
Il est important que votre fournisseur est unique pour chaque application.
- 1. Fournisseur de contenu Android
- 2. Android, fournisseur de contenu personnalisé
- 3. Fournisseur de contenu Android * non * dans Android?
- 4. Autorités du fournisseur de contenu
- 5. Fournisseur de contenu personnalisé pour android
- 6. Synchronisation Android sans fournisseur de contenu
- 7. Fournisseur de contenu Android ordre aléatoire
- 8. Fournisseur de contenu Android sans SQL
- 9. fournisseur de contenu SMS dans Android?
- 10. fournisseur de contenu Android donne Unknown contenu URL: // com
- 11. Fournisseur de transactions et de contenu Android Sqlite
- 12. Fournisseur de contenu Exa
- 13. fournisseur de contenu
- 14. test du contenu du fournisseur Android du fournisseur de contenu REAL
- 15. Requête de curseur de fournisseur de contenu Android
- 16. Android: Base de données du fournisseur de contenu de requête
- 17. Fournisseur de contenu dans les questions de base Android
- 18. Android - Fournisseur de contenu et base de données déjà créée
- 19. Fournisseur de contenu personnalisé pour Android? (Modification de l'exemple Notepad)
- 20. accéder au fournisseur de contenu
- 21. fournisseur de contenu inconnu uri
- 22. Fournisseur de contenu URI Matcher
- 23. Aucun fournisseur de contenu trouvé pour permission révoquer - Android
- 24. Android: Accès au fournisseur de contenu dans un service
- 25. comment écrire un fournisseur de contenu asynchrone dans android
- 26. Android - fichier du fournisseur de contenu non trouvé l'exception
- 27. Un téléphone Android sans le fournisseur de contenu SMS?
- 28. Fournisseur de contenu Android dans la même application
- 29. Différence entre le service Android et le fournisseur de contenu
- 30. Protéger/restreindre le fournisseur de contenu dans android
merci pour votre réponse! Malheureusement, je ne peux pas gérer l'ordre d'installation des applications. N'importe laquelle de ces applications pourrait être installée en premier. Comment implémenter le stockage de données partagées pour ce cas? – alexanoid
@alexanoid: "Comment implémenter le stockage de données partagées pour ce cas?" - Je ne connais pas de bonne stratégie pour ça. C'est un problème compliqué, car l'utilisateur peut désinstaller n'importe quelle application dans n'importe quel ordre. Ma réaction intempestive est de * ne * pas * essayer de partager des données en continu, mais plutôt donner à l'utilisateur la possibilité de copier explicitement des données d'une application à l'autre. Vous pouvez essayer de conserver les données dans un emplacement commun sur le stockage externe, une qui n'est pas supprimée lorsque les applications sont désinstallées, mais vous ne pouvez pas nettoyer lorsque la dernière application est désinstallée. – CommonsWare
Merci encore! dans le cas du fichier texte simple, puis-je utiliser une approche simple .. par exemple Fichier f = new Fichier (getContext(). getFilesDir(), "someveryvery uniquename.txt"); afin de partager des informations (lecture/écriture) entre toutes les applications? Est-ce une bonne idée d'utiliser la méthode getFilesDir() à cette fin? – alexanoid