我无法使用意图过滤器将我的活动绑定到我的服务应用程序。
以下是我必须连接到服务应用程序的代码段:
// The connection to the service.
private ServiceConnection connection = new ServiceConnection()
{
// When the messenger gets bound to the service.
public void onServiceConnected(ComponentName className, IBinder binder)
{
Log.e(TAG, "Attached");
messenger = new Messenger(binder);
}
// When the messenger gets unbound from the service.
public void onServiceDisconnected(ComponentName className)
{
messenger = null;
}
};
// Bind the service connection with the service application.
private void createServiceBinding()
{
Log.e(TAG, "binding service.");
activity.bindService(new Intent(this.activity, TestService.class), this.connection, Context.BIND_AUTO_CREATE);
this.isBound = true;
}
这可以找到。我可以使用Messenger发送和接收消息。但是,我需要能够使用我的服务应用程序的intent过滤器而不是TestService.class来调用activity.bindService。
如何使用intent过滤器将活动绑定到服务应用程序(例如com.example.testapplication.TestService而不是TestService.class)?
提前致谢!
答案 0 :(得分:2)
但是,我需要能够使用我的服务应用程序的intent过滤器而不是TestService.class来调用activity.bindService。
更准确地说,您希望能够使用与您服务的bindService()
匹配的Intent
来呼叫<intent-filter>
。
除非您计划绑定到服务的第三方应用,否则请坚持使用现有方法并从服务中删除<intent-filter>
。没有必要(如您所见)并默认导出您的服务。
如何使用intent过滤器将活动绑定到服务应用程序(例如com.example.testapplication.TestService而不是TestService.class)?
使用其他Intent
构造函数,以及Intent
对象上的其他设置器,将其配置为与<intent-filter>
匹配。由于您决定不提供<intent-filter>
,我们无法向您提供具体说明。
例如,如果您的<intent-filter>
看起来像:
<intent-filter>
<action android:name="com.troje.this.is.probably.a.bad.IDEA"/>
</intent-filter>
然后您的Intent
将通过new Intent("com.troje.this.is.probably.a.bad.IDEA")
创建,以用于绑定到服务。