Android смс приемник вещания - эмодзи - PullRequest
0 голосов
/ 07 февраля 2020

Я пишу небольшое приложение 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

1 Ответ

0 голосов
/ 07 февраля 2020

Сообщение, которое вы отправляете эмулятору, - ascii, а сообщение, которое вы отображаете в журнале - UTF8, его нужно прочитать как ascii

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...