package com.enterprise.mdm import android.app.Application import android.app.NotificationChannel import android.app.NotificationManager import android.os.Build import androidx.work.Constraints import androidx.work.ExistingPeriodicWorkPolicy import androidx.work.NetworkType import androidx.work.PeriodicWorkRequestBuilder import androidx.work.WorkManager import com.enterprise.mdm.work.SyncWorker import java.util.concurrent.TimeUnit class MdmApp : Application() { override fun onCreate() { super.onCreate() createChannel() schedulePeriodicSync() } private fun createChannel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { val ch = NotificationChannel(CHANNEL_ID, "MDM Notifications", NotificationManager.IMPORTANCE_HIGH) getSystemService(NotificationManager::class.java).createNotificationChannel(ch) } } private fun schedulePeriodicSync() { val constraints = Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build() val req = PeriodicWorkRequestBuilder(15, TimeUnit.MINUTES) .setConstraints(constraints).build() WorkManager.getInstance(this) .enqueueUniquePeriodicWork("mdm_sync", ExistingPeriodicWorkPolicy.KEEP, req) } companion object { const val CHANNEL_ID = "mdm_default" } }