package net.everythingandroid.smspopup.util;
import net.everythingandroid.smspopup.BuildConfig;
import android.app.KeyguardManager;
import android.app.KeyguardManager.KeyguardLock;
import android.app.KeyguardManager.OnKeyguardExitResult;
import android.content.Context;
public class ManageKeyguard {
private static KeyguardManager myKM = null;
private static KeyguardLock myKL = null; // TODO: change to FLAG_DISMISS_KEYGUARD/FLAG_SHOW_WHEN_LOCKED
public static synchronized void initialize(Context context) {
if (myKM == null) {
myKM = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
}
}
public static synchronized void disableKeyguard(Context context) {
initialize(context);
if (myKM.inKeyguardRestrictedInputMode()) {
myKL = myKM.newKeyguardLock(Log.LOGTAG);
myKL.disableKeyguard();
if (BuildConfig.DEBUG)
Log.v("--Keyguard disabled");
} else {
myKL = null;
}
}
public static synchronized boolean inKeyguardRestrictedInputMode() {
if (myKM != null) {
if (BuildConfig.DEBUG)
Log.v("--inKeyguardRestrictedInputMode = " + myKM.inKeyguardRestrictedInputMode());
return myKM.inKeyguardRestrictedInputMode();
}
return false;
}
public static synchronized void reenableKeyguard() {
if (myKM != null) {
if (myKL != null) {
myKL.reenableKeyguard();
myKL = null;
if (BuildConfig.DEBUG)
Log.v("--Keyguard reenabled");
}
}
}
public static synchronized void exitKeyguardSecurely(final LaunchOnKeyguardExit callback) {
if (inKeyguardRestrictedInputMode()) {
if (BuildConfig.DEBUG)
Log.v("--Trying to exit keyguard securely");
myKM.exitKeyguardSecurely(new OnKeyguardExitResult() {
@Override
public void onKeyguardExitResult(boolean success) {
reenableKeyguard();
if (success) {
if (BuildConfig.DEBUG)
Log.v("--Keyguard exited securely");
callback.LaunchOnKeyguardExitSuccess();
} else {
if (BuildConfig.DEBUG)
Log.v("--Keyguard exit failed");
}
}
});
} else {
callback.LaunchOnKeyguardExitSuccess();
}
}
public interface LaunchOnKeyguardExit {
public void LaunchOnKeyguardExitSuccess();
}
}