是否可以在库清单中定义服务而不在主机清单中定义它?

时间:2012-05-08 12:12:59

标签: android

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

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

代码结构是:

图书馆清单:

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

库中的应用程序子类:

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

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

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

2 个答案:

答案 0 :(得分:1)

值得一提,虽然它不会影响你当前的实现(如果我正确阅读),是否应该注意哪个Context传递给Intent构造函数

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

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

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

或者向BroadcastReceiver项目添加com.my.service.project,然后由sendBroadcast代替startService从客户端应用程序触发。

答案 1 :(得分:0)

NO

至少据我所知。您需要在清单中声明它才能激活它。

您可以以编程方式注册接收器。你可以google了。