我正在開發一個應用程序(至少)有兩種不同的包名 - 因此實際上是兩個不同的應用程序,只要android系統有關。該應用程序使用Facebook的分享,所以我在清單中聲明的供應商:Android的Facebook內容提供商權威
<provider android:authorities="com.facebook.app.FacebookContentProvider{app id here}"
android:name="com.facebook.FacebookContentProvider"
android:exported="true"/>
這是根據Facebook的指示做的:https://developers.facebook.com/docs/sharing/android
這正常工作與一個應用程序,但要安裝第二應用在同一個設備上失敗,錯誤爲INSTALL_FAILED_CONFLICTING_PROVIDER。這是清單中唯一定義的提供者,所以我很確定這是問題所在。如果我將提供程序字符串更改爲不同的內容,則嘗試打開Facebook共享對話框時會崩潰。
我見過說可以在多個android應用程序中使用相同的Facebook應用程序,但在Facebook的文檔中找不到任何有關它的內容。有沒有人這樣做,你是如何解決提供者權限問題的?謝謝。
如果每個味道都有不同的applicationID,那麼你可以做這樣的事情:HTTP://計算器.com/a/30791242/1426565並在清單中的提供者聲明中注入正確的applicationId,因爲$(applicationId)實際返回包名,而不是您在gradle中定義的applicationId – Guardanis
最後回到此 - 我要去嘗試它,但似乎像這樣會遇到同樣的問題,因爲應用程序結束時只有來自構建過程的權限字符串,而不是直接在清單中。 – nasch
您應該看看在構建時基於applicationId注入不同的值。這裏實際上是我上週的答案,應該可以幫助你做到這一點:http://stackoverflow.com/a/30791242/1426565 – Guardanis