I am attempting to install my app on my new Samsung Galaxy S8 for the first time from Android Studio. When I do so, I get the following error message:
Installation failed with message Failed to finalize session : INSTALL_FAILED_DUPLICATE_PERMISSION: Package bbct.android attempting to redeclare permission bbct.android.lite.permission.READ already owned by com.samsung.android.bixby.agent.
Why does Bixby own my permission? More importantly how do I fix this?
I fired up my Galaxy S8, installed the Applications Info app, and found
com.samsung.android.bixby.agent — it’s listed as “Bixby Voice”.
For whatever reason, in their manifest, they have a
<permission> element for
bbct.android.lite.permission.READ. It’s the only non-
com.samsung permission that I see for that app
On the plus side: Samsung knows who you are!
On the minus side: you’re fairly well screwed.
Other than switching to some other permission name, your app will never be able to be installed on the Galaxy S8 or any other Samsung device that has this Bixby app (and is running Android 5.0+, though I think Bixby is only for newer devices). Two apps cannot declare the same permission on the same device on Android 5.0+ unless they are signed with the same signing key, and presumably yours is not.
(I am curious as to how this happened — is this the app? Is it open source?)
It appears that a developer at Samsung borrowed some code from another SO question I wrote years ago: Requesting read permission from my own ContentProvider in another app. This question originally contained the permission name which I used in my app. I have word from other SO members that this will be fixed in the next Bixby update.