Я пишу небольшое приложение android, в котором есть широковещательный приемник для входящих смс-сообщений. Обычный текст работает нормально, но эмодзи отображаются как странные символы ().
Соответствующий код:
class SmsReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
val pdus = intent.extras?.get("pdus") as Array<ByteArray>
pdus.map { SmsMessage.createFromPdu(it) }
.forEach { Log.i("Receiver", "Got message ${it.displayMessageBody}") }
}
Сообщение, которое я отправляю в эмулятор: ???
Что я получаю в своем лог-файле: I/Receiver: Got message
Кто-нибудь знает, как получить правильный текст сообщения?
ОБНОВЛЕНИЕ
Итак, пройдя кроличью нору кодировок и библиотеку EmojiCompat, я обнаружил, что это проблема самого эмулятора. Когда я взял второй телефон и попробовал его на реальном устройстве, он просто работал. Я создал ошибку с android разработчиками, так что, надеюсь, у них есть исправление: https://issuetracker.google.com/issues/149141727