androidpermissionsalarm

App is not shown in Alarms & Reminders besides setting the SCHEDULE_EXACT_ALARM permission in manifest


As the title says, I have an app that targets Android 12 with compileSdkVersion = 31 and should trigger an exact alarm. The issue here is that the app is given the SCHEDULE_EXACT_ALARM permission in the manifest but it isn't shown in Alarms & Reminders list.

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

<application
  ...
    <receiver
        android:name=".boot.AlarmReceiver"
        android:exported="false"
        <intent-filter>
            <action android:name="android.app.action.SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED" />
        </intent-filter>
    </receiver>
 ...
</application>

I've tried debugging it using ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED in the broadcast receiver which also includes intent filter and the intent action to check whether if listens to that change and forcefully changing the REQUIRE_EXACT_ALARM_PERMISSION permission through App Compatibility Changes in Developer settings which it works.

    private fun runOnBootCompleted(intentAction: String) {
    if (intentAction == AlarmManager.ACTION_SCHEDULE_EXACT_ALARM_PERMISSION_STATE_CHANGED
    ) {                
     alarmManager.setRepeatingAlarm()
    }
}

Before setting the alarm I am checking whether the permission for it has been granted

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S &&!alarmManager.canScheduleExactAlarms()) {
                    openAlarmSettings()
                } else {
                    setRepeatingAlarm()
                }
            

This works perfectly, even when turning off the REQUIRE_EXACT_ALARM_PERMISSION it behaves as it should.

Is there something that I am missing which should be required for the app to be shown in the Alarms & Reminders list?


Solution

  • You need to set -

        androidCompileSdkVersion = 31
        androidTargetSdkVersion = 31
    

    Hope it helps!