Я пытаюсь найти какой-то ответ на свой вопрос на сайте, но ничего не нашел, и я не уверен, возможно ли удалить или скрыть наложение с помощью окнаManager при нажатии кнопки возврата или дома.Возможно ли удалить наложение с помощью WindowManager при нажатии на кнопку возврата или кнопку «домой» в андроиде?
Это то, что у меня есть сейчас. Я накладываю наложение с помощью службы доступности, которая охватывает весь экран, когда пользователь переходит на экран настроек моего приложения. WindowManager показывает наложение, но когда я пытаюсь нажать кнопку «Назад» или кнопку «домой», это не сработает. Кажется, это заблокировано. Только исчезновение наложения, когда процесс приложения остановлен.
Обратите внимание, что я не использую операцию для отображения наложения. Я использую accessitibilyService для выполнения этой задачи, которая простирается от AccessibilityService.
Что я хочу сделать, это когда пользователь нажимает кнопку «Назад» или «Домой», удаляет оверлей.
Это мой код, чтобы показать накладку:
private String checkOverlay = "hide"
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.MATCH_PARENT,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
0,
PixelFormat.TRANSLUCENT);
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
overlayRunning.setBackgroundColor(Color.parseColor("#1C1C1C"));
wm.addView(overlayRunning, params);
checkOverlay = "show";
я добавил этот метод класса:
@Override
public boolean onKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
Log.e(TAG, "Back button??");
Log.e(TAG, "Back button??");
overlayRunning.setVisibility(View.INVISIBLE);
case KeyEvent.KEYCODE_HOME:
Log.e(TAG, "Home button??");
if(checkOverlay.equals("show")) {
WindowManager wm = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
wm.removeViewImmediate(overlayRunning);
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
checkOverlay = "hide";
}
return false;
}
return super.onKeyEvent(event);
}