Я разрабатываю простой веб-браузер с 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, но он не работает большую часть времени.