2011-06-03 187 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

相关问题