Page 1 of 1

Empfänger falsch angemeldet? Android, Kotlin

Posted: 06 Jan 2025, 05:38
by Anonymous
Ich erstelle eine Android-App in Kotlin. Die App enthält eine Stoppuhr. Ich habe eine Serviceklasse (TimerService), die jede Sekunde eine Aufgabe korrekt ausführt (Protokoll wird angezeigt):

Code: Select all

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)
}
}
Der Empfänger (unten) empfängt jedoch nichts (Protokoll erscheint nicht):

Code: Select all

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())
}
}
Ich vermute, dass der Empfänger möglicherweise falsch registriert ist. Laut Tutorials sollte dies funktionieren:

Code: Select all

registerReceiver(
timeReceiver, IntentFilter(TimerService.TIMER_UPADATED)
)
Aber diese Implementierung von registerReceiver scheint jetzt veraltet zu sein und beim Debuggen scheint dies die richtige Version zu sein:

Code: Select all

registerReceiver(
requireContext(), updateTime, IntentFilter(TimerService.TIMER_UPADATED),
ContextCompat.RECEIVER_NOT_EXPORTED
)
Letzteres wird nicht empfangen.
SDK in der build.gradle-Datei:

Code: Select all

android {
namespace = "com.myapp.myapp"
compileSdk = 34

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