Ресивер неправильно зарегистрирован? Андроид, КотлинAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Ресивер неправильно зарегистрирован? Андроид, Котлин

Сообщение Anonymous »

Я создаю приложение для Android на Kotlin. Приложение содержит секундомер. У меня есть класс обслуживания (TimerService), который правильно выполняет задачу каждую секунду (появляется журнал):
private inner class MyTask(private var time: Double) : TimerTask() {
override fun run(){
Log.d("SERVICE", time.toString())
val intent = Intent(TIMER_UPADATED)
time++
intent.putExtra(TIME_EXTRA, time)
sendBroadcast(intent)
}
}

Однако получатель (ниже) ничего не получает (журнал не отображается):
registerReceiver(
timeReceiver, IntentFilter(TimerService.TIMER_UPADATED)
)

private val timeReceiver: BroadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
time = intent.getDoubleExtra(TimerService.TIME_EXTRA, 0.0)
Log.d("RECEIVER", time.toString())
}
}

Я думаю, что получатель может быть неправильно зарегистрирован. Согласно руководствам, это должно работать:
registerReceiver(
timeReceiver, IntentFilter(TimerService.TIMER_UPADATED)
)

Но эта реализация registerReceiver, похоже, устарела, и по результатам отладки кажется, что это правильная версия:
registerReceiver(
requireContext(), updateTime, IntentFilter(TimerService.TIMER_UPADATED),
ContextCompat.RECEIVER_NOT_EXPORTED
)

Последний не получает.
SDK в файле build.gradle:
android {
namespace = "com.myapp.myapp"
compileSdk = 34

defaultConfig {
applicationId = "com.myapp.myapp"
minSdk = 33
targetSdk = 34


Подробнее здесь: https://stackoverflow.com/questions/793 ... oid-kotlin
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»