проблема: , когда пользователь нажимает клавишу home или меню со своего устройства, тогда dispatchKeyEvent () не срабатывает, но когда пользователь нажимает кнопку назад со своего устройства, вызывается метод dispatchKeyEvent ().
вот мой фрагмент кода:
viewHolder = new RelativeLayout(context) {
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Log.e(TAG, "dispatchKeyEvent: ");
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK && event.getAction() == 0) {
Log.e(TAG, "dispatchKeyEvent: KEYCODE_BACK");
if (viewHolder != null) {
if (viewHolder.getWindowToken() != null) {
mWindowManager.removeView(viewHolder);
mOverlayView.setVisibility(VISIBLE);
} else {
return super.dispatchKeyEvent(event);
}
}
}
if (event.getKeyCode() == KeyEvent.KEYCODE_HOME) {
Log.e(TAG, "dispatchKeyEvent: KEYCODE_HOME");
if (viewHolder != null) {
if (viewHolder.getWindowToken() != null) {
mWindowManager.removeView(viewHolder);
mOverlayView.setVisibility(VISIBLE);
} else {
return super.dispatchKeyEvent(event);
}
}
}
if (event.getKeyCode() == KeyEvent.KEYCODE_MENU) {
Log.e(TAG, "dispatchKeyEvent: KEYCODE_MENU");
if (viewHolder != null) {
if (viewHolder.getWindowToken() != null) {
mWindowManager.removeView(viewHolder);
mOverlayView.setVisibility(VISIBLE);
} else {
return super.dispatchKeyEvent(event);
}
}
}
return super.dispatchKeyEvent(event);
}
};
здесь viewHolder - это относительное расположение, которое добавляется в диспетчер окон.
теперь я хочу удалить вид из оконного менеджера, когда пользователь нажимает кнопку home, menu и back на устройстве
когда пользователь нажимает кнопку «назад», этот метод срабатывает хорошо, а относительное отклонение удаляется из оконного менеджера, но при нажатии клавиши home, меню с его устройства, этот метод не вызывается