Проблема:
Я пытаюсь скопировать код 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 медленно работает на Redmi Note 14 с Android Studio?
Anonymous » » в форуме Android - 0 Ответы
- 2 Просмотры
-
Последнее сообщение Anonymous
-