-1

我无法使用意图过滤器将我的活动绑定到我的服务应用程序。

这是我必须连接到我的服务应用程序的片段:

// 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 发送和接收消息。但是,我需要能够使用我的服务应用程序的意图过滤器而不是 TestService.class 来调用 activity.bindService。

如何使用意图过滤器(例如 com.example.testapplication.TestService 而不是 TestService.class)将活动绑定到服务应用程序?

提前致谢!

4

1 回答 1

2

但是,我需要能够使用我的服务应用程序的意图过滤器而不是 TestService.class 来调用 activity.bindService。

更准确地说,您希望能够bindService()使用与您的服务Intent相匹配的呼叫。<intent-filter>

除非您计划将第三方应用程序绑定到您的服务,否则请坚持您现有的方法并将其<intent-filter>从服务中删除。这不是必需的(如您所见),默认情况下它会导出您的服务。

如何使用意图过滤器(例如 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")用于绑定到服务。

于 2012-10-10T21:26:50.037 回答