Android : How to programmatically open the soft ke

2019-04-04 01:26发布

问题:

As I see, a way to show default emojis on android is by using the following on an input text.

android:inputType="textMultiLine|textShortMessage"

When I search, I can't find a way to do this through Java. What I want to make happen is that when the soft keyboard is open, have the user tab a button to switch between emoji view and normal keyboard view.

Custom Emoji Keyboard.

I've already implemented this, but it would be much better to and lighter to use Emojis already on the device for post kik-kat.

Google does switch between this views.

On Google Allo, pressing the emoji icon inside the editText switch views.

回答1:

Maybe this will help you:

https://blog.swiftkey.com/tech-blog-android-input-method-subtypes/

There is something like an Emoji Subtype as you can see following the link below.

public static RichInputMethodSubtype getEmojiSubtype()

https://android.googlesource.com/platform/packages/inputmethods/LatinIME/+/master/java/src/com/android/inputmethod/latin/RichInputMethodSubtype.java



回答2:

After trying for a while I didn't achieved this goal even injecting a keyevent.

Looking in Google Allo, that looks as a custom implementation. I have switftkey themed keyboard and on KitKat Moto G (1st gen) it's very remarkeable. I tested also on a Marshmallow Moto G (2nd gen) with native keyboard, but contracted, and you can see that isn't the real soft keyboard :

I think there is no way to achieve this without a custom emoji's implementation.



回答3:

TextView

Using TextView's input type does not contain what you want...

Keyboards

Seems you can show the user a list of available keyboards. (the ones that are available on that device)

And with that, see if it has an Emoji Key Board available. But needs at least Android 4.1 it seems.

Force Part of Key Board

Not possible as far as I can see. You can disable them, it seems.

*I would love to show how to do this, it looks like a neat thing to be able to do. But my google-fu does not show anything close :(