如何将我的服务绑定到两个客户端?

时间:2015-03-10 12:58:49

标签: android service aidl

我有后台服务正在运行,我想使用AIDL能够与第三方应用进行通信。 我尝试使用AIDL进行应用程序通信,但它运行良好。

我的问题是,如果我想与其他应用通信, 如何过滤当前绑定的应用程序?

我尝试过滤:

@Override
public IBinder onBind(Intent intent) {
    // TODO Auto-generated method stub
    Log.d("INTENT",intent.getDataString())
    return (new IpPortBinder(getApplicationContext()));
}

但它崩溃,因为intent.getDataString()由于某种原因为null。我应该在这里使用哪种方法?

1 个答案:

答案 0 :(得分:0)

您可以过滤服务项目的androidmanifest文件中的意图。 步骤如下: 1)在服务的清单文件中定义过滤器。

<service android:name="com.x.y.servicename">
  <intent-filter >  
    <action android:name="getdata" />  
  </intent-filter>  
</service> 

2) 在调用绑定服务时,使用此意图从客户端应用程序调用bindservice

            Intent i=new Intent();
            i.setAction("getdata");
            ret=actContext.bindService(i, AddServiceConnection, Service.BIND_AUTO_CREATE);

可以从活动代码中的ServiceConnection实例定义中调用步骤2。