Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01R9CBCVP5oDu2sfoYPisNCQ
39 lines
1.5 KiB
Kotlin
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()
|
|
}
|
|
}
|
|
}
|
|
}
|