BaseInputConnection commitText не отправляет текст в WebView - PullRequest
0 голосов
/ 28 апреля 2020

Я разрабатываю простой веб-браузер с Button s поверх WebView. Эти кнопки работают как ярлыки ввода текста, настраиваемые пользователем. Допустим, пользователь много печатает «1234567890», он может установить этот текст с помощью сочетания клавиш, и каждый раз, когда он нажимает на него, текст отправляется на WebView. Для выполнения sh этого я использую BaseInputConnection.

Моя проблема в том, что текст не отправляется на WebView. Но если это сочетание клавиш, оно работает. Вот что у меня есть:

private WebView wv;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_browser);

    wv = findViewById(R.id.wvMain);
    wv.getSettings().setJavaScriptEnabled(true);
    wv.getSettings().setLoadWithOverviewMode(true);
    wv.getSettings().setUseWideViewPort(true);
    wv.setWebViewClient(new WebViewClient() {
    ...
   }
...
}

public void onShortcutButtonClick(View view) {
    Shortcut sc = (Shortcut) view.getTag(); // Shortcut is a custom class that holds the type and text of the shortcut among other stuff.
    switch (sc.getType()) {
        case Shortcut.TYPE_KEY: {
            BaseInputConnection inputConnection = new BaseInputConnection(wv, true);
            inputConnection.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_0)); // Works! "0" is sent to whatever field the cursor is in the page of the WebView.
        }
        break;
        case Shortcut.TYPE_TEXT: {
            BaseInputConnection inputConnection = new BaseInputConnection(wv, true);
            inputConnection.commitText("1234567890", 0)); // Doesn't work.
        }
        break;
        ...
    }
}


sendKeyEvent работает, но commitText - нет. Я не знаю, если это лучший способ отправить текст на WebView. Я также попытался отправить текст на активный элемент страницы, используя JavaScript, но он не работает большую часть времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...