Size: a a a

StartAndroid Ru Chat

2020 May 26

VL

Vladyslav Lozytskyi in StartAndroid Ru Chat
vgdn1942
Делаю меню по переназначению хардварных кнопок. Столкнулся с тем, что код кнопки "Назад" не обрабатывается как нужно. Вот такой код работает (упрощённо, на примере переназначения кнопки Камера на кнопку Назад):
Код
import android.app.Instrumentation;
import android.view.KeyEvent;

   private static Instrumentation mInstrument = new Instrumentation();

   private static void KeyShortCut(KeyEvent event) {
       switch (event.getKeyCode()) {
           case KeyEvent.KEYCODE_CAMERA:
               mInstrument.sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
               mInstrument.sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
           break;
       }
   }

Андроид реагирует как положено. А вот такой код не хочет работать:

Код
import android.app.Instrumentation;
import android.view.KeyEvent;

   private static Instrumentation mInstrument = new Instrumentation();

   private static void KeyShortCut(KeyEvent event) {
       switch (event.getKeyCode()) {
           case KeyEvent.KEYCODE_CAMERA:
               if (event.getAction() == KeyEvent.ACTION_DOWN) {
                   mInstrument.sendKeySync(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK));
               } else if (event.getAction() == KeyEvent.ACTION_UP) {
                   mInstrument.sendKeySync(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_BACK));
               }
           break;
       }
   }

Нужен именно второй вариант, т.к. в первом никак не обработать долгое нажатие кнопки. При чём с остальными кодами кнопок (меню, домой, вверх, вниз) второй код работает отлично, затык только в коде кнопки назад. При чём судя по логу, андроид получает код кнопки, но почему то не реагирует на него. Весь код написан в системе (PhoneWindowManager.java), т.е. с разрешениями и прочим проблем не должно возникнуть. Подскажите, чем обусловлено такое поведение?
Возможно тем, что код кнопки назад может по особому обрабатываться, стоит покопать тот же PhoneWindowManager и посмотреть как он себя ведет, в частности, методы interceptBeforeQueuing и dispatchBeforeQueuing (с названиями могу немного ошибаться, но что-то подобное там точно есть)
источник

AP

Andrey Pomazkin in StartAndroid Ru Chat
привет
по сочетанию каких то клавиш появилась двойка. что это такое и как это убрать?
источник

AP

Andrey Pomazkin in StartAndroid Ru Chat
Android Studia
источник

sd

saidov. developer in StartAndroid Ru Chat
а это вам мешает ?
источник

AP

Andrey Pomazkin in StartAndroid Ru Chat
вдруг от этого релиз умрет)
источник

sd

saidov. developer in StartAndroid Ru Chat
ну не знаю
источник

AP

Andrey Pomazkin in StartAndroid Ru Chat
так что за цифра? почему она там? что она делает? меня гнетет любопытство
источник

AP

Andrey Pomazkin in StartAndroid Ru Chat
что гуглить, какая то цифра на полях студии?
источник

a

arsenyi in StartAndroid Ru Chat
У меня как то было тоже самое, го в идеи самой
источник

a

arsenyi in StartAndroid Ru Chat
Помогло удаление несколько строк
источник

a

arsenyi in StartAndroid Ru Chat
Не знаю, влияет ли это на что то
источник

—Шaxpuёр— in StartAndroid Ru Chat
🖐 Привет!

Как применить только портретную ориентацию?
источник

—Шaxpuёр— in StartAndroid Ru Chat
источник

I

Ivan in StartAndroid Ru Chat
как вариант, можешь так оставить
источник

I

Ivan in StartAndroid Ru Chat
это ворнинг
источник

F

Foteh in StartAndroid Ru Chat
—Шaxpuёр—
🖐 Привет!

Как применить только портретную ориентацию?
android:screenOrientation="portrait"
           tools:ignore="LockedOrientationActivity"
источник

—Шaxpuёр— in StartAndroid Ru Chat
Ivan
как вариант, можешь так оставить
Спасибо 😊
источник

—Шaxpuёр— in StartAndroid Ru Chat
Foteh
android:screenOrientation="portrait"
           tools:ignore="LockedOrientationActivity"
Спасибо, работает 😊
источник

F

Foteh in StartAndroid Ru Chat
—Шaxpuёр—
Спасибо, работает 😊
хоб!
источник

—Шaxpuёр— in StartAndroid Ru Chat
А можно применить портрет сразу на всю страницу?
источник