package com.reindeercrafts.notificationpeek.utils; import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.content.ComponentName; import android.content.Context; import com.reindeercrafts.notificationpeek.LockscreenDeviceAdminReceiver; import com.reindeercrafts.notificationpeek.NotificationService; import java.lang.ref.WeakReference; /** * A helper class that is used to check if the notification access and device administrators access * are enabled. * * Code modified from AcDisplay by AChep@xda <artemchep@gmail.com>: * https://github.com/AChep/AcDisplay/blob/master/project/ActiveDisplay * * Created by zhelu on 5/9/14. */ public class AccessChecker { private static WeakReference<ComponentName> mAdminComponentName; public static boolean isNotificationAccessEnabled(Context context) { ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager .getRunningServices(Integer.MAX_VALUE)) { if (NotificationService.class.getName().equals(service.service.getClassName())) { return true; } } return false; } public static boolean isDeviceAdminEnabled(Context context) { ComponentName admin; if (mAdminComponentName == null || mAdminComponentName.get() == null) { admin = new ComponentName(context, LockscreenDeviceAdminReceiver.class); mAdminComponentName = new WeakReference<ComponentName>(admin); } else { admin = mAdminComponentName.get(); } DevicePolicyManager dpm = (DevicePolicyManager) context.getSystemService(Context.DEVICE_POLICY_SERVICE); return dpm.isAdminActive(admin); } }