即使已设置,闹钟也不显示通知或播放声音

问题描述 投票:0回答:1

我目前正在开发一个 Android 应用程序,该应用程序可以设置在特定时间触发的闹钟。我已经实现了设置闹钟的代码,并且设置似乎没有任何错误,这可以在 here 和闹钟选项卡中看到。

但是,闹钟不会在指定时间触发,因此,没有播放任何通知、声音或 setAlarmClock 中引用的任何其他操作(除了正在正确启动的挂起意图之外)。

这是我用来设置闹钟的代码的简化版本:

val intent = Intent(context, AlarmClockReceiver::class.java)

val pendingIntent = PendingIntent.getBroadcast(context, reqCode, intent, PendingIntent.FLAG_IMMUTABLE)

val alarmManager: AlarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager


val calendar: Calendar = Calendar.getInstance().apply {
    timeInMillis = System.currentTimeMillis()
    set(Calendar.HOUR_OF_DAY, desiredHour)
    set(Calendar.MINUTE, desiredMinute)
val calendarMillis = calendar.timeInMillis
alarmManager.setAlarmClock(AlarmManager.AlarmClockInfo(calendarMillis, pendingIntent), pendingIntent)

我已检查是否可以设置准确的警报,并且我已定义并请求以下权限:

    <uses-permission android:name="android.permission.USE_EXACT_ALARM"/>
    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
    <uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
android kotlin alarmmanager alarm android-alarms
1个回答
0
投票

我有类似的问题,我有检查清单给你)

  1. 添加
    set(Calendar.SECONDS, 0)
    ,因为设置闹钟时它可以在0..59范围内。
  2. 将您的
    pendingIntent
    更改为
    val pendingIntent = PendingIntent.getBroadcast(context, reqCode, intent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT)

P.S 你可以用闹钟检查我的项目https://github.com/hicosmonaut/hourly/tree/master没什么特别的,应用程序每小时闹钟一次,就像卡西欧手表每小时闹钟一样。也许你会发现一些对你有用的东西,比如 PendingIntent、AlarmClock 等

© www.soinside.com 2019 - 2024. All rights reserved.