Files
DataControl/app/src/main/java/com/jttools/datacontrol/admin/AppDeviceAdminReceiver.kt
T

39 lines
1.5 KiB
Kotlin

package com.jttools.datacontrol.admin
import android.app.admin.DeviceAdminReceiver
import android.content.Context
import android.content.Intent
import com.jttools.datacontrol.remote.RemoteSync
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import javax.inject.Inject
@AndroidEntryPoint
class AppDeviceAdminReceiver : DeviceAdminReceiver() {
@Inject lateinit var remoteSync: RemoteSync
/** Android 9 et avant : fin du provisionnement signalée ici (Android 10+ : PolicyComplianceActivity). */
override fun onProfileProvisioningComplete(context: Context, intent: Intent) {
Provisioning.complete(context, Provisioning.extrasOf(intent))
}
override fun onDisableRequested(context: Context, intent: Intent): CharSequence =
"Désactiver la protection permet de désinstaller DataControl. Cette action est signalée à FamilyControl."
override fun onDisabled(context: Context, intent: Intent) {
// Prévient le parent : la protection anti-désinstallation vient d'être retirée.
// goAsync : sans lui, le processus peut être arrêté avant que l'alerte soit partie.
val pending = goAsync()
CoroutineScope(Dispatchers.IO).launch {
try {
remoteSync.pushEvent("admin_disabled", "Protection anti-désinstallation désactivée")
} finally {
pending.finish()
}
}
}
}