为什么我会“无法启动服务意图”?

时间:2011-06-03 11:48:26

标签: java android service android-intent

我正在尝试从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 个答案:

答案 0 :(得分: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的说明。如果他们不提供此文档,您可能应该重新考虑使用此产品。

答案 1 :(得分:0)

我的解决方案是在手机上启动服务器部件(在这种情况下,AndroidPit.com的AppCenter)。客户端应用程序中不需要AndroidManifest中的任何条目。