我目前正在开发一个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" />
1条答案
按热度按时间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等等