【发布时间】:2014-07-15 05:49:11
【问题描述】:
根据开发者论坛上的documentaion,这就是我可以使用 AIDL 绑定我的服务的方式:
/* Establish a couple connections with the service, binding by interface names.This allows other applications to be installed that replace the remote service by implementingthe same interface.*/
bindService(new Intent(IRemoteService.class.getName()),mConnection, Context.BIND_AUTO_CREATE);
现在我有了应用程序 A,它有服务类和 AIDL 接口。
我有应用程序 B,我希望通过它访问应用程序 A 的服务类,使用在应用程序 A 中公开的 AIDL 方法。
所以我在应用 B 中为 AIDL 创建了完全相同的包,并粘贴了来自应用 A 的 AIDL。
但是当我尝试使用文档中提到的上述机制绑定服务时,它告诉我:
无法启动服务 Intent { act com.example.service.MyService } U=0:未找到
在应用 A 服务中
导出=“真”。
现在采用这种方法,我在应用程序 A 中将 Intent Filter 添加到我的服务中,并尝试使用
指定显式意图intent.setClassName(String packageName, String className)
现在它开始工作了!
那么在参考原始文档时我是否遗漏了什么?什么时候会使用这个方法?
【问题讨论】:
-
IRemoteService.class.getName() 返回什么?你是如何在清单中定义你的服务的?
-
请参考我的问题开头的链接,该链接指的是Android文档。 developer.android.com/guide/components/aidl.html#Calling
-
你没有回答,你是如何在清单中声明你的服务的?
-
-
所以添加一个具有唯一操作 e 的意图过滤器。 G。 "com.example.service.MyService.ACTION_START" 并将该字符串传递给 Intent 构造函数