Je hérite d'une base de code qui doit être conservée en parfaite synchronisation avec la version précédente pour que la mise à jour des nouvelles versions soit aussi simple que possible lorsqu'elles appliquent les modifications via git. Les changements que je fais sont liés au re-style et à l'ajout de nouvelles fonctionnalités.Autorités du fournisseur de contenu
Dans la dernière version, je cherchais à installer à la fois la version originale de l'application à côté de cette version personnalisée et a obtenu cette erreur:
Failure [INSTALL_FAILED_CONFLICTING_PROVIDER]
Je regardais à travers mon contrôle de code source et a constaté que dans les versions précédentes I utilisait le même authorities
et name
que l'application parente, mais je ne me souviens pas d'avoir ce problème, mais peut-être que je n'ai jamais testé le cas où les deux applications ont été installées en même temps?
Dans la version originale du manifeste, c'est l'élément fournisseur:
<provider
android:name="com.foo.mobile.android.provider.Provider"
android:authorities="com.foo.android.mobile.contentprovider"
android:exported="false" />
J'ai essayé de changer l'autorité à ceci:
<provider
android:name="com.foo.mobile.android.provider.Provider"
android:authorities="com.bar.android.mobile.contentprovider"
android:exported="false" />
Mais les application se bloque peu de temps après le lancement avec SecurityException
:
java.lang.SecurityException: Permission Denial: opening provider com.foo.mobile.android.provider.Provider from ProcessRecord{42cbc998 2462:com.bar/u0a191} (pid=2462, uid=10191) that is not exported from uid 10189
J'ai regardé sur SO et vu un couple de questions sur ce sujet et a également regardé the documentation et tout dit que j'ai besoin de ce authorities
pour être différent, mais comment puis-je garder cela différent tout en gardant une synergie avec le code de base?
Cela a fonctionné. J'ai trouvé qu'il y avait une référence à cela dans un autre endroit. Une fois que j'ai changé cela, ça a marché. Je vous remercie! –