2012-12-09 79 views
2

假設我們有兩個安裝的APK,每個APK具有相同的服務和相同的操作。就像使用的種類或庫等等。來自兩個不同APK的Android服務相同

據我瞭解,最後安裝的APK實際上負責但從服務的角度。

當任何APK綁定到服務提我不能實際操作指定爲我要綁定的服務器。或者我可以嗎?

這是重要的我,我有兩個不同的版本用於建立這些APK的同一個庫中。我的某個APK的代碼可能會期望該服務是基於某些考慮而構建的。

嚴格地說,我需要知道我可以綁定到特定的服務,如果不止一個具有相同的名稱,包裝名稱(從實際的包名稱不同)和行動。

我對這種痛苦的閱讀對不起......

+0

「等所使用的一種或圖書館左右的」 - 因爲圖書館沒有的東西添加到自動清單,託管應用程序應該是採用獨特的動作字符串的服務。 – CommonsWare

+0

在Android中使用AIDL服務的情況下,當2個或更多的應用程序想要使用相同的服務。請參考此鏈接http://marakana.com/forums/android/examples/48.html – curious

+0

他是相反的情況。每個APK都想綁定到自己的服務。它只是發生在兩個服務是相同的名稱和行動。目前這不能改變。 – OGP

回答

1

這不能改變現在。

有才華的程序員可以在一兩分鐘內改變這一點。

我知道上次安裝的APK實際上是從服務的角度來負責的。

其實,據我所知,第一個在勝利,而不是最後一個。

如果多於一個具有相同的名稱,包的名稱(從實際的包名稱不同)和動作。

這是不可能的,因爲您不能同時使用相同的包名稱安裝兩個應用程序。

可能以不同的包名安裝兩個應用程序,但包含具有相同的完全限定類名Service並與<intent-filter>共享相同的操作字符串輸出。正如我在對問題的評論中指出的那樣,這是糟糕的設計。

也就是說,您可以使用setComponent()startService()等一起使用的Intent來標識Service。您將需要使用the two-String constructor,在第一個參數中提供APK的軟件包名稱,在第二個參數中提供Service的完全限定類名稱。

+0

我的意思是服務名稱和它的包名是通過這兩個APK相同的。其實我必須鉤住bindService方法並調用setClassName來改變調用意圖。現在它以我需要的方式工作。我忘了提及那兩個APK沒有源代碼,我只用代碼注入來修改它。 – OGP

+0

@OGP:請重新閱讀我答案的最後一段。 – CommonsWare

+0

我沒有改變,但saetClassName的作品也很好。謝謝。 – OGP

相關問題