我有一个后台服务运行,我想使用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。我应该在这里使用哪种方法?
您可以过滤服务项目的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。