2

我有一个包含 Android Application 类的子类的库。子类包含一个启动服务的方法(也包含在库项目中)。

当我将库包含在我的主机应用程序中时,活动管理器抱怨它无法启动服务意图(未找到)。

代码结构为:

库清单:

<service name="com.my.project.MyService" />

库中的应用程序子类:

Intent intent = new Intent(this, MyService.class);
startService(intent);

我可以通过在主机应用程序清单中再次定义服务来解决问题;但是,我不希望将此要求强加给使用该库的开发人员。

我的问题是,我可以避免在主机清单中引用库服务的要求吗?

4

2 回答 2

1

值得一提的是,虽然它不会影响您当前的实现(如果我没看错的话),但应该注意哪个Context传递给Intent构造函数。

例如,如果您决定将您的 APK 移至Service单独的 APK,则在客户端应用程序中将找不到该服务Context

然后,您可以改用替代Intent构造函数:

Intent intent = new Intent("com.my.service.project", "com.my.service.project.MyService");

或者将 a 添加BroadcastReceivercom.my.service.project项目中,然后由 asendBroadcast而不是startService.

于 2012-05-08T12:47:38.350 回答
0

至少据我所知。您需要在清单中声明它才能使其处于活动状态。

您可以通过编程方式注册接收器。你可以用谷歌搜索。

于 2012-05-08T12:26:37.810 回答