如何在 Android 中设置闹钟?

How can I set up alarm in Android?

提问人:Peter Horvath 提问时间:1/26/2023 更新时间:1/26/2023 访问量:33

问:

我打算在我的 Android 应用程序中设置闹钟服务。我的应用程序甚至没有启动。它停在行上。怎么了?我该如何解决?val pendingIntent = ...

设置警报的功能如下所示:

private fun startAlarm() {
   val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
   val intent = Intent(this, AlarmReceiver::class.java)
   val pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0)
   val calendar = Calendar.getInstance()
   calendar.set(Calendar.HOUR_OF_DAY, 10)
   calendar.set(Calendar.MINUTE, 0)
   calendar.set(Calendar.SECOND, 0)

   alarmManager.setRepeating(AlarmManager.RTC, calendar.timeInMillis, AlarmManager.INTERVAL_DAY, pendingIntent)
}

我在清单文件中有接收器:

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

欢迎任何建议。 先谢谢你

Android 警报管理器 android-pendingintent

评论

0赞 Enowneb 1/26/2023
代码对我来说看起来不错。你说的它停止是什么意思?应用程序是否崩溃(如果是,您可以共享 logcat 错误日志吗)?您使用的是哪个 Android 版本?
0赞 Peter Horvath 1/27/2023
是的。它崩溃并出现异常:java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.goalplan/com.example.goalplan.MainViewActivity}:java.lang.IllegalArgumentException:com.example.goalplan:定位 S+(版本 31 及更高版本)要求在创建 PendingIntent 时指定FLAG_IMMUTABLE或FLAG_MUTABLE之一。强烈建议使用 FLAG_IMMUTABLE,仅当某些功能依赖于 PendingIntent 是可变的时才使用 FLAG_MUTABLE,例如,如果它需要与内联回复或气泡一起使用。如何设置标志?
1赞 Peter Horvath 1/27/2023
解决方案:val pendingIntent = PendingIntent.getActivity( applicationContext, NOTIFICATION_REQUEST_CODE, intent, PendingIntent.FLAG_IMMUTABLE)
0赞 Enowneb 1/27/2023
是的,从某些Android版本开始,调用代码可能会有所不同。你的代码应该工作正常。
0赞 Peter Horvath 1/28/2023
不调用 AlarmReceiver 的 onReceive() 函数。为什么?我还能做什么?

答: 暂无答案