Отослать пресс-событие к основной деятельности

На самом деле моя аппаратная кнопка возврата не работает. Так что я пытаюсь создать плавающее представление, по щелчку которого я могу отправить назад нажатие на текущее действие (поскольку мое плавающее представление не в фокусе, следовательно, действие под наложением находится в фокусе).

Таким образом, я смог построить представление наложения, используя следующий код

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 для этого, но я не знаю как. Кто-нибудь может подсказать мне, как этого добиться (отослать обратно прессу к основной деятельности). Спасибо!

0 ответов

Другие вопросы по тегам