Sunday 14 May 2023

OnRecieve() from BroadCastReceiver not being called - android 13 (API 33) only

onReceive() is called by all other API levels but for some reason is not called by API 33.

As far as I understand as of API 31 SCHEDULE_EXACT_ALARM permission is needed and auto allowed however after API 33 no longer auto set as true.

However as of API 33 USE_ALARM is available which is allowed from install and SCHEDULE_EXACT_ALARM is no longer needed in this case.

my permissions:

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

alarm manager:

fun schedule(context: Context) {
    val alarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
    val intent = Intent(context, AlarmReceiver::class.java)
    intent.putExtra("once", once)
    intent.putExtra("vibrate", vibrate)
    intent.putExtra("shake", shake)
    intent.putExtra("snooze", snooze)
    val alarmPendingIntent = PendingIntent.getBroadcast(
        context,
        alarmId, intent,
        PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
    )
    val calendar: Calendar = Calendar.getInstance()
    calendar.timeInMillis = System.currentTimeMillis()
    calendar.set(Calendar.HOUR_OF_DAY, hour)
    calendar.set(Calendar.MINUTE, minute)

    //if alarm time has already passed, increment day by 1
    if (calendar.timeInMillis <= System.currentTimeMillis()) {
        calendar.set(Calendar.DAY_OF_MONTH, calendar.get(Calendar.DAY_OF_MONTH) + 1)
    }

    val alarmInfo = AlarmClockInfo(calendar.timeInMillis, alarmPendingIntent)
}

As mentioned above this problem is specific to android 13. If there is something more specific I should post here please let me know in a comment and I can update.



from OnRecieve() from BroadCastReceiver not being called - android 13 (API 33) only

No comments:

Post a Comment