Отослать пресс-событие к основной деятельности
На самом деле моя аппаратная кнопка возврата не работает. Так что я пытаюсь создать плавающее представление, по щелчку которого я могу отправить назад нажатие на текущее действие (поскольку мое плавающее представление не в фокусе, следовательно, действие под наложением находится в фокусе).
Таким образом, я смог построить представление наложения, используя следующий код
private void initialiseChatHead()
{
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
chatHead = new ImageView(this);
chatHead.setImageResource(R.drawable.ic_back);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.TOP | Gravity.LEFT;
params.x = 0;
params.y = 100;
windowManager.addView(chatHead, params);
gestureDetector = new GestureDetector(this, new SingleTapConfirm());
setOnTouchListener(params);
}
и я подумал, что поскольку он не находится в фокусе, отправка клавиши "назад" перейдет к основной деятельности, но это не сработало.
@Override
public boolean onTouch(View v, MotionEvent event) {
if (gestureDetector.onTouchEvent(event))
{
Toast.makeText(getApplicationContext(), "I am here", Toast.LENGTH_LONG).show();
v.dispatchKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
return false;
}
}
Разыскивая, как это сделать, я наткнулся на это приложение, которое делает то же самое. Я думаю, что он использует AccessibilityService для этого, но я не знаю как. Кто-нибудь может подсказать мне, как этого добиться (отослать обратно прессу к основной деятельности). Спасибо!