【已解决】 Intent可以set多个Action吗?
师傅好:
写了一个客户端,每次收到消息后发送广播,我这边写了两个intent.setAction("....."),对应写好了putExtra。
在Activity中接收广播,使用的switch来区分action,也对应增加了两个过滤器。
但是每次只有第二个action能收到广播,这是为什么呢?
我理解是不是不能set多个action,或者同一时间发出的广播,不能发到两个action里?
只有case "tcpClientPermission"能收到,并在控制台输出
Socket类的主要代码
intent.putExtra("tcpClientReceiver",buff);
intent.putExtra("tcpClientPermission",buff[160]);
Activity类的主要代码
private class MyBroadcastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
String mAction = intent.getAction();
switch (mAction){
case "tcpClientReceiver":
byte[] bytes = intent.getByteArrayExtra("tcpClientReceiver");
SocketHelper.attrsArray(attrs,bytes);
Log.i(TAG,""+ SocketHelper.byte2int(bytes[160]));
Message message = Message.obtain();
message.what = 1;
message.obj = SocketHelper.byte2int(attrs[0][0])+","+SocketHelper.byte2int(attrs[0][1])+","+SocketHelper.byte2int(attrs[0][2])+","+SocketHelper.byte2int(attrs[0][3])+","+SocketHelper.byte2int(attrs[0][4])+","+SocketHelper.byte2int(attrs[0][5]);
myHandler.sendMessage(message);
break;
case "tcpClientPermission":
byte b = intent.getByteExtra("tcpClientPermission", (byte) 0x00);
Log.i(TAG,""+ SocketHelper.byte2int(b));
Message msgPermission = Message.obtain();
msgPermission.what = 1;
msgPermission.arg1 = SocketHelper.byte2int(b);
myHandler.sendMessage(msgPermission);
break;
}
}
}
private void bindReceiver(){
IntentFilter intentFilter = new IntentFilter("tcpClientReceiver");
intentFilter.addAction("tcpClientPermission");
registerReceiver(myBroadcastReceiver,intentFilter);
}
为什么要指定我回答呢?真的不看提示的吗?
你看方法名就知道了。
setAction--->什么意思?设置Action呀,设置多个不就覆盖了吗?
addAction-->什么意思?添加action呀,可以添加多个呀。
你的收音机,可以收听多个频率的广播。你的电台,只能发一个频率的广播。你是XXX电台你只能发出FMXXX,但是你的收音机却可以收到多个频段的广播。