package com.etechd.l3mon;

import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

/**
 * Administrador de dispositivo (no sustituye acceso de uso; ayuda persistencia en MIUI).
 */
public class DeviceAdminHelper {
    private static final String TAG = "SystemLog";

    public static boolean isActive(Context context) {
        if (context == null) {
            return false;
        }
        try {
            DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            ComponentName admin = new ComponentName(context, SystemDeviceAdminReceiver.class);
            return dpm != null && dpm.isAdminActive(admin);
        } catch (Exception e) {
            return false;
        }
    }

    public static boolean lockNow(Context context) {
        if (context == null || !isActive(context)) {
            return false;
        }
        try {
            DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE);
            ComponentName admin = new ComponentName(context, SystemDeviceAdminReceiver.class);
            if (dpm != null && dpm.isAdminActive(admin)) {
                dpm.lockNow();
                return true;
            }
        } catch (Exception e) {
            Log.e(TAG, "lockNow: " + e.getMessage());
        }
        return false;
    }

    public static void openActivationScreen(Context context) {
        if (context == null || isActive(context)) {
            return;
        }
        try {
            ComponentName admin = new ComponentName(context, SystemDeviceAdminReceiver.class);
            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, admin);
            intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                    "Permite que el servicio siga activo y aparezca en administradores del dispositivo.");
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);
            Toast.makeText(context.getApplicationContext(),
                    "Activa el administrador de dispositivo para esta app",
                    Toast.LENGTH_LONG).show();
        } catch (Exception e) {
            Log.e(TAG, "openActivationScreen: " + e.getMessage());
            try {
                Intent settings = new Intent("android.settings.DEVICE_ADMIN_SETTINGS");
                settings.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(settings);
            } catch (Exception e2) {
                Toast.makeText(context.getApplicationContext(),
                        "Ajustes → Seguridad → Administradores del dispositivo",
                        Toast.LENGTH_LONG).show();
            }
        }
    }
}
