Очистить Редактировать текст - adb

Как очистить выделенный текст редактирования с помощью команды оболочки.

Я старался

adb shell input keyevent KEYCODE_CLEAR // Not worked 
adb shell input keyevent KEYCODE_DEL // Delete only one char
adb shell input keyevent KEYCODE_FORWARD_DEL // Not worked

При этом я могу удалить только до одного символа, есть ли способ удалить / очистить выделенный текст редактирования.

6 ответов

Это работает для меня:

function clear_input() {
    adb shell input keyevent KEYCODE_MOVE_END
    adb shell input keyevent --longpress $(printf 'KEYCODE_DEL %.0s' {1..250})
}

Затем:

clear_input

Это выберет все, а затем Backspace.

      input keycombination 113 29 && input keyevent 67

Вы можете использовать этот способ:

      adb shell input keyevent --longpress 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67

67 — это код KEYCODE_DEL.

Если вы используете uiautomator ( https://github.com/xiaocong/uiautomator), вы можете сделать это:

  1. нажмите виджет EditText, чтобы получить фокус, затем

  2. использование device(focused=True).clear_text() чтобы очистить вид, или device(focused=True).set_text("new text") установить новый текст.

Единственный способ, который я нашел, - это получить правильные координаты input swipe x y x y duration симулировать долгое нажатие. Затем будет выделен весь текст в поле EditText. Затем вы можете отправить ключи, которые вы хотите заменить, что было там.

Я просто желаю этого adb shell input keyevent KEYCODE_CLEAR очистит весь текст в поле. Это сделало бы все намного проще, если бы кто-то мог найти лучший способ, который был бы великолепен.

Вероятно, следующее решение выглядит как хак, но оно сработало:

        mEditText.setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (KeyEvent.KEYCODE_CLEAR == keyCode) {
                    mEditText.setText("");
                }
                return true;
            }
        });
Другие вопросы по тегам