Я занимаюсь разработкой android приложения, в котором пользователи могут вводить эмодзи в androidx.emoji.widget.EmojiEditText
. Я использую Emoji Compat с setReplaceAll(true)
для рендеринга смайликов.
На моем телефоне я использую Gboard в качестве клавиатуры для ввода смайликов. Я заметил две проблемы на телефоне Samsung:
- Gboard отображает только смайлики, которые доступны для всей системы, даже если мое приложение способно воспроизводить больше смайликов (благодаря смайлику compat). Например, попугай ? был добавлен в Unicode в 2018 году и не является частью системного шрифта моего телефона. Поэтому он не отображается в списке, и я не могу его напечатать.
- Стили смайликов в стиле Gboard по умолчанию используются в моем системном стиле шрифта эмодзи, который отличается от шрифта Noto Color Emoji, который я использую в своем приложении через EmojiCompat.
Выглядит это так: samsung gboard
Однако, если я открою WhatsApp на том же телефоне, Gboard внезапно отобразит дополнительные смайлики (например, попугай ?) а также переключается на стиль Noto Color Emoji. Например: samsung gboard в whatsapp
Это заставляет меня думать, что должен быть какой-то механизм, чтобы сказать клавиатуре, какие эмодзи должны быть включены (например, версия Unicode) или какой стиль следует использовать. Мне не удалось найти что-либо о таком механизме, например, через параметры IME, InputType
, EditorInfo
, InputConnections
или тому подобное. Возможно у Gboard есть EditorInfo#privateImeOptions
?
Есть ли способ сообщить программной клавиатуре android о доступных смайликах, например, о поддерживаемой версии Unicode или что-то вроде EmojiCompats setReplaceAll()
, чтобы она предоставляет пользователю все смайлики, а не только те, которые доступны в системе?