Проблема:
Я пытаюсь скопировать код OTP из входящего SMS в буфер обмена широковещательного приемника. Это работает нормально на Galaxy A52s 5G, но не на Redmi Note 9S.
Коды: Приемник OTP-вещания:
импортировать... класс OtpSmsReceiver : BroadcastReceiver() { @SuppressLint("UnsafeProtectedBroadcastReceiver") переопределить fun onReceive(context: Context, Intent: Intent) { пытаться { val Bundle = Intent.extras если (пакет != ноль) { val otpSms = getNewOtpSms (пакет) если (otpSms != ноль) { val (otp, банк) = OtpSmsManager.getOtpFromSms(otpSms, true) ?: возвращаться if (otp.isNotEmpty() && bank.isNotEmpty()) { copyOtpToClipboard (контекст, otp) Log.i("SmsReceiver", "Новый OTP-код от $bank: $otp") showOtpNotification(контекст, otp, банк) } } } // пакет имеет значение null } catch (e: Exception) { Log.e("SmsReceiver", "Исключение smsReceiver: $e") } } частное развлечение copyOtpToClipboard (контекст: Context, otp: String) { вал буфер обмена = context.getSystemService(Context.CLIPBOARD_SERVICE) как ClipboardManager clipboardManager.setPrimaryClip( ClipData(ClipData.newPlainText("otp_code", otp)) ) } личное развлечение getNewOtpSms(bundle: Bundle?): OtpSms? { если (пакет != ноль) { if (bundle.containsKey("pdus")) { val pdus = Bundle.get("pdus") если (pdus != ноль) { val pdusObj = pdus as Array вар сообщение = "" вар дата = "" for (я в pdusObj.indices) { val currentMessage = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { SmsMessage.createFromPdu(pdusObj as ByteArray?, "3gpp") } еще { SmsMessage.createFromPdu(pdusObj как ByteArray?) } сообщение += currentMessage.displayMessageBody дата = currentMessage.timestampMillis.toString() } // конец цикла вернуть OtpSms(сообщение, дата) } еще { вернуть ноль } } еще { вернуть ноль } } еще { вернуть ноль } } } AndroidManifest.xml: Разрешения: Тег получателя широковещательной рассылки: Шаги, которые я пробовал: [*]Я проверил разрешения и убедился, что получатель широковещательной рассылки имеет разрешения READ_SMS и WRITE_CLIPBOARD. [*]Я попробовал перезагрузить устройство. [*]Я обновил приложение до последней версии. [*]Я проверил журналы устройства и обнаружил, что ошибок, связанных с приемником вещания или буфером обмена, нет. Вопрос: Почему функция copyOtpToClipboard() не работает на Redmi Note 9S?
Дополнительная информация:
[*]Устройство работает под управлением Android 12. [*]Я использую последнюю версию Android SDK и Android Studio.
Я пытался использовать Службы для решения этой проблемы, но проблема все равно оставалась..
Ожидаемое поведение:
При получении SMS получатель трансляции должен скопировать OTP-код в буфер обмена.
Фактическое поведение:
Получатель широковещательной рассылки получает SMS и извлекает OTP-код, но функция copyOtpToClipboard() не работает.
Невозможно скопировать OTP-код в буфер обмена в приемнике вещания на Redmi Note 9S (Android 12) ⇐ Android
Форум для тех, кто программирует под Android
1696090140
Гость
Проблема:
Я пытаюсь скопировать код OTP из входящего SMS в буфер обмена широковещательного приемника. Это работает нормально на Galaxy A52s 5G, но не на Redmi Note 9S.
Коды: Приемник OTP-вещания:
импортировать... класс OtpSmsReceiver : BroadcastReceiver() { @SuppressLint("UnsafeProtectedBroadcastReceiver") переопределить fun onReceive(context: Context, Intent: Intent) { пытаться { val Bundle = Intent.extras если (пакет != ноль) { val otpSms = getNewOtpSms (пакет) если (otpSms != ноль) { val (otp, банк) = OtpSmsManager.getOtpFromSms(otpSms, true) ?: возвращаться if (otp.isNotEmpty() && bank.isNotEmpty()) { copyOtpToClipboard (контекст, otp) Log.i("SmsReceiver", "Новый OTP-код от $bank: $otp") showOtpNotification(контекст, otp, банк) } } } // пакет имеет значение null } catch (e: Exception) { Log.e("SmsReceiver", "Исключение smsReceiver: $e") } } частное развлечение copyOtpToClipboard (контекст: Context, otp: String) { вал буфер обмена = context.getSystemService(Context.CLIPBOARD_SERVICE) как ClipboardManager clipboardManager.setPrimaryClip( ClipData(ClipData.newPlainText("otp_code", otp)) ) } личное развлечение getNewOtpSms(bundle: Bundle?): OtpSms? { если (пакет != ноль) { if (bundle.containsKey("pdus")) { val pdus = Bundle.get("pdus") если (pdus != ноль) { val pdusObj = pdus as Array вар сообщение = "" вар дата = "" for (я в pdusObj.indices) { val currentMessage = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { SmsMessage.createFromPdu(pdusObj[i] as ByteArray?, "3gpp") } еще { SmsMessage.createFromPdu(pdusObj[i] как ByteArray?) } сообщение += currentMessage.displayMessageBody дата = currentMessage.timestampMillis.toString() } // конец цикла вернуть OtpSms(сообщение, дата) } еще { вернуть ноль } } еще { вернуть ноль } } еще { вернуть ноль } } } AndroidManifest.xml: Разрешения: Тег получателя широковещательной рассылки: Шаги, которые я пробовал: [*]Я проверил разрешения и убедился, что получатель широковещательной рассылки имеет разрешения READ_SMS и WRITE_CLIPBOARD. [*]Я попробовал перезагрузить устройство. [*]Я обновил приложение до последней версии. [*]Я проверил журналы устройства и обнаружил, что ошибок, связанных с приемником вещания или буфером обмена, нет. Вопрос: Почему функция copyOtpToClipboard() не работает на Redmi Note 9S?
[b]Дополнительная информация:[/b]
[*]Устройство работает под управлением Android 12. [*]Я использую последнюю версию Android SDK и Android Studio.
Я пытался использовать Службы для решения этой проблемы, но проблема все равно оставалась..
[b]Ожидаемое поведение:[/b]
При получении SMS получатель трансляции должен скопировать OTP-код в буфер обмена.
[b]Фактическое поведение:[/b]
Получатель широковещательной рассылки получает SMS и извлекает OTP-код, но функция copyOtpToClipboard() не работает.
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия