BroadcastReceiver不能在两个服务之间工作

时间:2015-01-28 05:28:03

标签: android service broadcastreceiver

我的广播接收器不能在两种服务之间工作..

这是代码

[First Sevice]

class ServiceHandler extends Handler
{
    @Override
    public void handleMessage(Message msg) {

       case Constants.MESSAGE_READ:
            Log.d("MainService_Handler", "Service - MESSAGE_READ: ");

            byte[] readBuf = (byte[]) msg.obj;
            // construct a string from the valid bytes in the buffer
            READ_DATA = readBuf;
            String strBuf = new String(readBuf, 0, msg.arg1);
            READ_STRING = strBuf;
            Intent intent = new Intent(MainService.this, InputHelperService.class);
            intent.setAction(InputHelperService.READ_MESSAGE);
            intent.putExtra("read", readBuf[1]);
            sendBroadcast(intent);

            //inputCommitment(readBuf[0]);

            break;

[第二次服务]

public class InputHelperService扩展InputMethodService {

public static String READ_MESSAGE = "com.example.eyelink.READMESSAGE";

@Override
public int onStartCommand(Intent intent, int flags, int startId){
    Log.i("InputHelperService", "InputHelperService - onStartCommand()");

    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction("READ_MESSAGE");
    registerReceiver(messageReceiver, intentFilter);
    Log.i("InputHelperService", "InputHelperService - onStartCommand(): register the receiver");

    return super.onStartCommand(intent, flags, startId);
}

@Override
public void onDestroy(){
    Log.i("InputHelperService", "InputHelperService: onDestroy()");
    unregisterReceiver(messageReceiver);
}

...



public final BroadcastReceiver messageReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent){
        Log.i("InputHelperService", "InputHelperService: Broadcast onReceive()");
        if(intent.getAction().equals(READ_MESSAGE)){
            byte data = intent.getExtras().getByte("read");
            Log.i("InputHelperService", "InputHelperService: Broadcast onReceive() - " + data);
        }
    }
};

}

但我的广播接收器没有回复。

出了什么问题?

1 个答案:

答案 0 :(得分:1)

下面:

  

intentFilter.addAction(" READ_MESSAGE&#34);

您正在使用不同的Action来准备intentFilter以注册接收方和发送广播。使用相同的操作字符串:

intentFilter.addAction(InputHelperService.READ_MESSAGE);

发送广播为:

    Intent intent = new Intent(InputHelperService.READ_MESSAGE); 
    intent.putExtra("read", readBuf[1]);
    sendBroadcast(intent);