我正在尝试从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)。
提前致谢。
答案 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.HashMap
和Activity
的任何实现都来自Object
,因此您无需将清单中的活动。如果您尝试这样做,您将很快发现您的活动不再有效。
如果它是一个组件(活动,服务,内容提供者或BroadcastReceiver
的某些实现),并且组件的实现在您的项目中(直接,通过JAR,通过库项目等) 。),你必须在清单中有一个条目。
无论您从哪里获得服务,都应该向您提供将服务添加到清单的说明,并且它们还应该为您提供创建用于绑定它的Intent
的说明。如果他们不提供此文档,您可能应该重新考虑使用此产品。
答案 1 :(得分:0)
我的解决方案是在手机上启动服务器部件(在这种情况下,AndroidPit.com的AppCenter)。客户端应用程序中不需要AndroidManifest中的任何条目。