Andrey
Andrey

Reputation: 2729

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

Upvotes: 5

Views: 864

Answers (1)

Andrey
Andrey

Reputation: 2729

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;

Upvotes: 10

Related Questions