Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Android handle 'search' button press on custom keyboard

I'am developing my own custom keyboard.

How to handle 'search' button press in case if our keyboard opened with IME_ACTION_SEARCH parameter?

I have following code, but unfortunately in search case it's not working. In regular situation with Done button it working good.

        final int options = this.getCurrentInputEditorInfo().imeOptions;
        final int actionId = options & EditorInfo.IME_MASK_ACTION;

        switch (actionId) {
            case EditorInfo.IME_ACTION_SEARCH:
                ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SEARCH));
                break;
            default:
                ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
        }

Thanks

like image 972
Andrey Avatar asked Jun 07 '15 21:06

Andrey


1 Answers

I found the solution to do it:

endDefaultEditorAction(true);

it's a method of InputMethodService

The full code is:

    case Keyboard.KEYCODE_DONE:
        final int options = this.getCurrentInputEditorInfo().imeOptions;
        final int actionId = options & EditorInfo.IME_MASK_ACTION;

        switch (actionId) {
            case EditorInfo.IME_ACTION_SEARCH:
                sendDefaultEditorAction(true);
                break;
            case EditorInfo.IME_ACTION_GO:
                sendDefaultEditorAction(true);
                break;
            case EditorInfo.IME_ACTION_SEND:
                sendDefaultEditorAction(true);
                break;
            default:
                ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
        }

        break;
like image 198
Andrey Avatar answered Sep 27 '22 19:09

Andrey