discord-jadx/app/src/main/java/androidx/work/impl/background/systemalarm/Alarms.java

63 lines
3.1 KiB
Java

package androidx.work.impl.background.systemalarm;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import androidx.annotation.NonNull;
import androidx.annotation.RestrictTo;
import androidx.core.app.NotificationCompat;
import androidx.work.Logger;
import androidx.work.impl.WorkDatabase;
import androidx.work.impl.WorkManagerImpl;
import androidx.work.impl.model.SystemIdInfo;
import androidx.work.impl.model.SystemIdInfoDao;
import androidx.work.impl.utils.IdGenerator;
@RestrictTo({RestrictTo.Scope.LIBRARY_GROUP})
public class Alarms {
private static final String TAG = Logger.tagWithPrefix("Alarms");
private Alarms() {
}
public static void cancelAlarm(@NonNull Context context, @NonNull WorkManagerImpl workManagerImpl, @NonNull String str) {
SystemIdInfoDao systemIdInfoDao = workManagerImpl.getWorkDatabase().systemIdInfoDao();
SystemIdInfo systemIdInfo = systemIdInfoDao.getSystemIdInfo(str);
if (systemIdInfo != null) {
cancelExactAlarm(context, str, systemIdInfo.systemId);
Logger.get().debug(TAG, String.format("Removing SystemIdInfo for workSpecId (%s)", str), new Throwable[0]);
systemIdInfoDao.removeSystemIdInfo(str);
}
}
private static void cancelExactAlarm(@NonNull Context context, @NonNull String str, int i) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(NotificationCompat.CATEGORY_ALARM);
PendingIntent service = PendingIntent.getService(context, i, CommandHandler.createDelayMetIntent(context, str), 536870912);
if (service != null && alarmManager != null) {
Logger.get().debug(TAG, String.format("Cancelling existing alarm with (workSpecId, systemId) (%s, %s)", str, Integer.valueOf(i)), new Throwable[0]);
alarmManager.cancel(service);
}
}
public static void setAlarm(@NonNull Context context, @NonNull WorkManagerImpl workManagerImpl, @NonNull String str, long j) {
WorkDatabase workDatabase = workManagerImpl.getWorkDatabase();
SystemIdInfoDao systemIdInfoDao = workDatabase.systemIdInfoDao();
SystemIdInfo systemIdInfo = systemIdInfoDao.getSystemIdInfo(str);
if (systemIdInfo != null) {
cancelExactAlarm(context, str, systemIdInfo.systemId);
setExactAlarm(context, str, systemIdInfo.systemId, j);
return;
}
int nextAlarmManagerId = new IdGenerator(workDatabase).nextAlarmManagerId();
systemIdInfoDao.insertSystemIdInfo(new SystemIdInfo(str, nextAlarmManagerId));
setExactAlarm(context, str, nextAlarmManagerId, j);
}
private static void setExactAlarm(@NonNull Context context, @NonNull String str, int i, long j) {
AlarmManager alarmManager = (AlarmManager) context.getSystemService(NotificationCompat.CATEGORY_ALARM);
PendingIntent service = PendingIntent.getService(context, i, CommandHandler.createDelayMetIntent(context, str), 134217728);
if (alarmManager != null) {
alarmManager.setExact(0, j, service);
}
}
}