Android - 检测耳机按钮点击的广播接收器在 API 23(棉花糖)上不起作用

Android - Broadcast receiver to detect headset button click not working on API 23 (marshmallow)

我正在使用广播接收器来检测耳机按钮的点击。下面是广播接收器的代码。

public class HeadSetButtonStateReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals(Intent.ACTION_MEDIA_BUTTON)) {
            KeyEvent event = (KeyEvent) intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
            if (event != null) {
                int action = event.getAction();
                if (action == KeyEvent.ACTION_DOWN) {
                    Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show();
                    EventBus.getDefault().post(new HeadSetButtonEvent("1"));
                }
            }
        }

    }
}

它在 API 22(棒棒糖)上工作正常,但在 API 23(棉花糖设备)上不起作用。我试图查看 Whosebug,但没有找到任何东西。

 check the priority

 IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON); 
    MediaButtonIntentReceiver recev = new MediaButtonIntentReceiver();
    filter.setPriority(1000);  
    registerReceiver(recev , filter);

改用 int 试试

if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
    KeyEvent event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
    int intKey = event.getKeyCode();
}

您可能会为 1 个按钮获得 2 个不同的 int 值。