我有后台服务正在运行,我想使用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。我应该在这里使用哪种方法?
答案 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。