Android - comment faire pour complètement désactiver le verrouillage du clavier

Je veux contrôler l'activation/la désactivation du verrouillage de l'appareil.
Pour le faire, je suis en utilisant DevicePolicyManager et KeyguardLock API du SDK Android.

Ci-dessous est ma mise en œuvre pour gérer ce:

public class DeviceLocker {
private static DeviceLocker instance;
public static synchronized DeviceLocker getInstance(Context context) {
if(instance==null) {
instance = new DeviceLocker(context);
}
return instance;
}
private Context context;
private KeyguardLock lock;
private DeviceLocker(Context context) {
this.context = context;
}
public void lock() {
lock(true);
}
public void lock(boolean lockNow) {
getLock().reenableKeyguard();
DevicePolicyManager devicePolicyManager = getDevicePolicyManager();
if(devicePolicyManager==null) {
return;
}
LocalStorage storage = LocalStorage.from(context);
boolean result = devicePolicyManager.resetPassword(storage.getPassword(),
DevicePolicyManager.RESET_PASSWORD_REQUIRE_ENTRY);
if(lockNow) {
devicePolicyManager.lockNow();
}
storage.setDeviceLocked(true);
}
public void unlock() {
DevicePolicyManager devicePolicyManager = getDevicePolicyManager();
if(devicePolicyManager==null) {
return;
}
devicePolicyManager.resetPassword("",0);
getLock().disableKeyguard();
LocalStorage.from(context).setDeviceLocked(false);
}
private KeyguardLock getLock() {
if(lock==null){
KeyguardManager kgManager = (KeyguardManager)context.getSystemService(Activity.KEYGUARD_SERVICE);
lock = kgManager.newKeyguardLock(Context.KEYGUARD_SERVICE);
}
return lock;
}
private DevicePolicyManager getDevicePolicyManager() {
DevicePolicyManager devicePolicyManager =
(DevicePolicyManager)context.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName deviceAdmin = new ComponentName(context, WatchGuardDeviceAdminReceiver.class);
LocalStorage storage = LocalStorage.from(context);
if(!devicePolicyManager.isAdminActive(deviceAdmin)) {
return null;
}
if(!storage.isPasswordSet()) {
UIUtils.showMessage(context, R.string.password_not_set);
return null;
}
devicePolicyManager.setPasswordQuality(deviceAdmin,DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED);
return devicePolicyManager;
}

}

Il fonctionne ok concernant le verrouillage de l'écran, mais déverrouiller fucntionality fonctionne avec quelques questions:
parfois, cela fonctionne comme je le veux(supprime complètement tout type de verrouillage de l'écran), mais parfois il montre "Déverrouiller avec toboggan" verrouillage de l'écran.

Savez-vous quel est le problème ici? Comment faire fonctionner stable (au moins dans tous les cas, soit d'afficher "Déverrouiller pour le slide" ou complètement supprimer le verrouillage du clavier)?

Merci d'avance pour l'aide.

MODIFIER

Veux juste faire remarquer que ma solution fonctionne, mais le problème est qu'il fonctionne instable (parfois supprime le verrouillage du clavier complètement et montrent parfois "slide" verrouillage du clavier).
Et aussi je l'utilise non seulement pour désactiver le verrouillage du clavier tout en montrant une certaine activité, mais de contrôle de verrouillage/déverrouillage de l'appareil en commun, donc j'utilise ce code dans le Service, donc je ne peux pas appeler getWindow().addFlags(..) cause je n'ai pas la Fenêtre pour appliquer.

Juste vous demandez-vous peut-être quelqu'un a traité ce comportement instable.

Qu'est-ce que le LocalStorage classe ici? Tu fais ça à partir d'un framework Web? Aussi, avez-vous jamais obtenir une solution de travail? Je suis à la recherche mise en œuvre dans un DPC.

OriginalL'auteur kowalski | 2014-02-18