onReceive() 函数未调用 broadcast接收器、Kotlin、Android

onReceive() function of a broadcastreceiver is not called, Kotlin, Android

提问人:Peter Horvath 提问时间:1/30/2023 更新时间:2/2/2023 访问量:75

问:

我正在尝试建立基本的警报服务。设置闹钟的代码如下所示。我有 15 分钟的间隔,看看是否有任何事情发生。

       val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
       val intent = Intent(this, AlarmReceiver::class.java)
       val pendingIntent = PendingIntent.getActivity(
           applicationContext,
           0,
           intent,
           PendingIntent.FLAG_IMMUTABLE)

       val calendar = Calendar.getInstance()
       calendar.set(Calendar.HOUR_OF_DAY, 20)
       calendar.set(Calendar.MINUTE, 40)
       calendar.set(Calendar.SECOND, 0)

       alarmManager.setRepeating(AlarmManager.RTC, calendar.timeInMillis, AlarmManager.INTERVAL_FIFTEEN_MINUTES, pendingIntent)


我在清单文件中注册了接收器:

   <application>
   ...
       <receiver
           android:name=".AlarmReceiver"
           android:enabled="true"
           android:exported="false" />

   </application>

此外,我也在清单文件中定义了一个权限

    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />

不调用 AlarmReceiver 类的 onReceive 函数。 我有一个 println 行。它不会打印出任何东西。

我不知道我能做些什么来使闹钟正常工作。 欢迎任何提示。

先谢谢你 br, 彼得

Android Kotlin BroadcastReceiver 警报

评论

2赞 CommonsWare 1/30/2023
替换为 .PendingIntent.getActivity()PendingIntent.getReceiver()
0赞 Peter Horvath 1/30/2023
谢谢你的提示。getBroadcast() 有效,因为不存在 getReceiver()。所以,它现在可以工作了。谢谢。
0赞 CommonsWare 1/30/2023
啊,对不起,我是凭记忆写的。不过,我很高兴你让它工作!考虑写下你自己的问题答案!

答:

0赞 Peter Horvath 1/31/2023 #1

在创建 而不是PendingIntent.getBroadcast()PendingIntentPendingIntent.getActivity()