I am using an open-srouce code from Google for an app called MyTracks.
I am getting this error when the original app is installed on the phone.
INSTALL_FAILED_CONFLICTING_PROVIDER
I know that this is because of the android:authorities
in the Manifest.
here is the part of the Manifest:
<provider
android:name="com.google.android.apps.mytracks.content.MyTracksProvider"
android:authorities="com.google.android.maps.mytracks"
android:exported="true"
android:readPermission="com.google.android.apps.mytracks.READ_TRACK_DATA"
android:writePermission="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
<!-- Search suggestion provider -->
<provider
android:name="com.google.android.apps.mytracks.content.SearchEngineProvider"
android:authorities="com.google.android.maps.mytracks.search"
android:exported="false" />
So, my question is: I want to know whether this approach may solve the problem or not, because I am afraid of changing all the packages names and then have the whole app broken.
android :authorities
value is the package name. The android:name
is the name of the class of that provider.
Am I correct?If I change the package name, to another one different than the com.google etx, and rename all the references/ imports of that package, should the problem go away?
The android :authorities value is the package name.
In this case, it happens to be the package name. It simply has to be unique.
The android:name is the name of the class of that provider
Correct.
If I change the package name, to another one different than the com.google etx, and rename all the references/ imports of that package, should the problem go away?
The package name has nothing to do with it. You may need to change that as well, though, for your app to be able to be installed alongside the regular, un-modified app.
You need to have a unique value for android:authorities
, and the code in your app that uses this ContentProvider
needs to use an appropriate Uri
(content://whatever.you.change.the.authority.to/...
).
If you are using Google Maps + Google Play Services inside a library project, you can encounter this error when you try to run an app that uses your library, while a different app that uses the same library is already installed on your device.
Fix:
make sure that defaultConfig.applicationId is defined in android section of the build.gradle
file for each project using your library
android {
defaultConfig.applicationId = "com.company.appname"
}
I would recommend using the package name of the specific app. With this fix, the provider names will no longer conflict, and your app will run as expected.
Symptoms
1.) Your users are seeing the dreaded "-505" install error when installing your app from the Play Store.
2.) You will see this error message when you try to install a second app that uses your library via Android Studio:
In your console, you will see a message like this:
Package couldn't be installed in /data/app/com.company.appname-1
com.android.server.pm.PackageManagerException:
Can't install because provider name
com.google.android.gms.measurement.google_measurement_service
(in package com.company.appname) is already used by
com.company.otherInstalledAppName
The fix is to make sure that defaultConfig.applicationId is defined in android section of the build.gradle
file for each project using your library
android {
defaultConfig.applicationId = "com.company.appname"
}
More reading can be found here in the original bug report: Issue 784: Multiple apps using same authority provider name
just uninstall helloFacebooksample app from you device
if you use for ex facebook-sdk then for each app you need unique this line in manifest
<provider android:authorities="com.facebook.app.FacebookContentProviderxxxxxxxxxx"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
xxxxxxxxxx - should be unique for each app, for facebook-sdk it's your facebook_id number
I got this same error when I changed the package name in my app's manifest. This creates a conflict when you try to install the app again (with the new package name). The solution is to remove the old version of the app (that uses the old package name), then you'll be able to install the new version.
Just Uninstall the application from the device which you are trying to run and try to reinstall application again. The existing application is conflicting with the new one.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With