Check for exact alarm permission

pull/2260/head
Alex Baker 3 years ago
parent d477dfb448
commit 97e1b75781

@ -10,6 +10,7 @@ import androidx.work.*
import androidx.work.ExistingWorkPolicy.APPEND_OR_REPLACE import androidx.work.ExistingWorkPolicy.APPEND_OR_REPLACE
import androidx.work.ExistingWorkPolicy.REPLACE import androidx.work.ExistingWorkPolicy.REPLACE
import com.todoroo.andlib.utility.AndroidUtilities import com.todoroo.andlib.utility.AndroidUtilities
import com.todoroo.andlib.utility.AndroidUtilities.atLeastS
import com.todoroo.andlib.utility.DateUtilities import com.todoroo.andlib.utility.DateUtilities
import com.todoroo.astrid.data.Task import com.todoroo.astrid.data.Task
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
@ -158,9 +159,11 @@ class WorkManagerImpl constructor(
} }
} else { } else {
val pendingIntent = notificationPendingIntent val pendingIntent = notificationPendingIntent
if (!atLeastS() || alarmManager.canScheduleExactAlarms()) {
alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time, pendingIntent) alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time, pendingIntent)
} }
} }
}
override fun scheduleBackup() = override fun scheduleBackup() =
enqueueUnique( enqueueUnique(

@ -1,11 +1,14 @@
package org.tasks.scheduling; package org.tasks.scheduling;
import android.annotation.SuppressLint; import static com.todoroo.andlib.utility.AndroidUtilities.atLeastS;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.Context; import android.content.Context;
import dagger.hilt.android.qualifiers.ApplicationContext;
import javax.inject.Inject; import javax.inject.Inject;
import dagger.hilt.android.qualifiers.ApplicationContext;
public class AlarmManager { public class AlarmManager {
private final android.app.AlarmManager alarmManager; private final android.app.AlarmManager alarmManager;
@ -19,9 +22,10 @@ public class AlarmManager {
alarmManager.cancel(pendingIntent); alarmManager.cancel(pendingIntent);
} }
@SuppressLint("NewApi")
public void wakeup(long time, PendingIntent pendingIntent) { public void wakeup(long time, PendingIntent pendingIntent) {
if (!atLeastS() || alarmManager.canScheduleExactAlarms()) {
alarmManager.setExactAndAllowWhileIdle( alarmManager.setExactAndAllowWhileIdle(
android.app.AlarmManager.RTC_WAKEUP, time, pendingIntent); android.app.AlarmManager.RTC_WAKEUP, time, pendingIntent);
} }
} }
}

Loading…
Cancel
Save