我正面临着这样的问题:
我有一个远程(不同进程)绑定服务,它定义了一个带有动作字符串的IntentFilter
。
我的客户端使用bindService(..)
调用中的相同操作字符串绑定到它。
现在,当我使用完全不同的 AIDL 接口实现另一项服务但定义了相同的IntentFilter时,请安装此服务并删除旧服务:
我的问题:有没有办法在运行时检查远程服务正在实现的接口?
我找到的唯一可行方法是检查ComponentName
中的ServiceConnection
。
这有一个含义:
我将来无法交换服务的实施。
或者我错过了什么?
答案 0 :(得分:0)
据我所知,你想做两件事之一:
a)连接到实现所需接口的服务(并且您不关心如何实现服务)
在这种情况下,您使用意图过滤器。在这种情况下,每个服务应该有不同的internt过滤器。一般来说,当您定义相同的意图过滤器时,您说这两个服务是兼容的(并且它们不是,因为AIDL不同)。
所以,你应该在这里有不同的意图过滤器。
b)连接到一个非常特殊的服务(它不能被任何其他服务替代)。
在这种情况下,当你执行bindService时,你应该在intent中指定expilicit组件名称,并将其传递给bindService。