我有一个包含Android Application类子类的库。子类包含一个启动服务的方法(也包含在库项目中)。
当我在我的主机应用程序中包含库时,活动管理器会抱怨它无法启动服务意图(未找到)。
代码结构是:
<service name="com.my.project.MyService" />
Intent intent = new Intent(this, MyService.class);
startService(intent);
我可以通过在主机应用程序清单中再次定义服务来解决问题;但是,我不希望将此要求强加给使用该库的开发人员。
我的问题是,我可以避免在主机清单中引用库服务的要求吗?
答案 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了。