android - BroadcastReceiver 在两个服务之间不起作用

标签 android service broadcastreceiver

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

这里是代码

[第一服务]

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)类 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);
        }
    }
};

但是我的广播接收器没有响应。

怎么了?

最佳答案

这里:

intentFilter.addAction("READ_MESSAGE");

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

intentFilter.addAction(InputHelperService.READ_MESSAGE);

并发送广播:

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

关于android - BroadcastReceiver 在两个服务之间不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28185247/

相关文章:

android - 如何在抽屉导航的主要内容 View 中使用多个 fragment

android - 在不同进程中运行服务的优点和缺点是什么?

android - 如何访问 list 中声明的​​广播接收器并更改某些属性

java - 只有一个 Android Service 实例

android - 地理围栏事件并不总是被称为

android - 无法在 Android 中通过蓝牙录制音频

android - 协程中的自定义拦截器

java - Android 应用程序创建不在 Activity 中的内部文件

android - 谷歌地图安卓 : snap polyline to street

android - 确定当前前台(正在运行的)应用程序(使用服务?)的最佳方法