2011-06-03 95 views
0

我試圖從AndroidPit.com獲得一些授權代碼,但我得到「無法啓動服務意圖」。基本上我的代碼如下所示:爲什麼我會收到「無法啓動服務意圖」?

 Intent licenseIntent = new Intent("de.androidpit.app.services.ILicenseService");    
     if (mContext.bindService(licenseIntent, this, Context.BIND_AUTO_CREATE)) 
     { 
      // success 
     } 
     else 
     { 
      // failure (I get this all the time(
     } 

我試圖通過ILicenseService類明確:

 Intent licenseIntent = new Intent(mContext, de.androidpit.app.services.ILicenseService.class); 

,但我仍然得到了同樣的問題。

我設法讓Android Market LVL庫使用相同的代碼工作,所以我不明白爲什麼它找不到「de.androidpit.app.services.ILicenseService」,但設法找到「com.android .vending.licensing.ILicensingService」。

我在這裏找到的大多數答案都說你需要在AndroidManifest.xml文件中添加東西,但是對於「com.android.vending.licensing.ILicensingService」工作不需要任何東西,所以我想我應該'不需要任何東西「de.androidpit.app.services.ILicenseService」(它們都來自android.os.IInterface)。

在此先感謝。

+2

您是否記得將該服務添加到清單中? – Bex 2011-06-03 12:17:07

回答

0

在我的情況下,解決方案是在我的手機上啓動一個服務器部件(本例中爲AndroidPit.com的AppCenter)。 AndroidManifest中沒有條目是客戶端應用程序所必需的。

1

大多數我發現這裏的答案說,你需要附加的東西到AndroidManifest.xml

這些問題的答案是正確的。

,但你「com.android.vending.licensing.ILicensingService」沒有任何工作

這是因爲com.android.vending.licensing.ILicensingService是一個遠程服務,一個是不是在你的項目,但而不是在設備的固件中。

所以我想我應該不需要任何「de.androidpit.app.services.ILicenseService」(它們都來自android.os.IInterface)。

這是有缺陷的推理。根據你的論點,java.util.HashMap不在清單中,並且java.util.HashMapActivity的任何實現都來自Object,所以你不需要將你的活動放在清單中。如果你嘗試這個,你會很快發現你的活動不再有效。

如果它是組件(活動,服務,內容提供者或BroadcastReceiver的某些實現),並且組件的實現在您的項目中(直接通過JAR或庫項目等)你必須在清單中有一個條目。

無論你從哪裏獲得服務,都應該向你提供有關將服務添加到清單的說明,並且它們還應提供有關創建用於綁定到該清單的Intent的說明。如果他們不提供這些文件,或許你應該重新考慮你對這個產品的使用。

+0

謝謝 - 服務是遠程的洞察力是非常有幫助的(我對整個這種意圖邏輯是新的)。我可以看到Client應用程序不需要AndroidManifest.xml中的條目(例如:https://github.com/commonsguy/cw-advandroid/tree/master/AdvServices/RemoteClient)。有沒有關於Android如何找到這些遠程服務的好文章,以及它在哪裏/如何查找它們? – 2011-06-03 15:22:33

+1

@Paulius Liekis:「有沒有關於Android如何發現這些遠程服務的好文章,以及它在哪裏/如何查找它們?」 - Android通過您使用的「Intent」找到它們。在大多數情況下,SDK應用程序通過向其添加「」來廣告服務以供其他應用程序使用。 'com.android.vending.licensing.ILicensingService'與固件更緊密相關,可能不會像SDK應用程序那樣公開,並且由於它不是開放源碼(AFAIK),所以我們不能說。 – CommonsWare 2011-06-03 15:52:38

相關問題