kotlin 报警不显示通知或播放声音,即使它已设置

bfrts1fy  于 8个月前  发布在  Kotlin
关注(0)|答案(1)|浏览(99)

我目前正在开发一个Android应用程序,它可以设置闹钟在特定时间触发。我已经实现了设置闹钟的代码,它似乎没有任何错误,可以在here和闹钟选项卡中看到。
但是,闹钟不会在指定的时间触发,因此,setAlarmClock播放时没有通知、声音或任何其他引用的操作(除了正确启动的挂起Intent)。
下面是我用来设置闹钟的代码的简化版本:

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" />
jfewjypa

jfewjypa1#

我有类似的问题,我有检查清单给你)
1.添加set(Calendar.SECONDS, 0),因为当您设置报警时,它可以在0..59的范围内。
1.将您的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等等

相关问题