기기에서 키 가드를 사용/사용 중지하도록 제어하고 싶습니다. Android SDK의 DevicePolicyManager 및 KeyguardLock API를 사용하고 있습니다.Android - 키 가드를 완전히 비활성화하는 방법
그것은 화면의 잠금에 대한 확인을 작동하지만 fucntionality은 몇 가지 문제와 함께 작동 잠금을 해제
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;
}
} : 다음
이를 관리하는 내 구현 때로는 그것이 내가 원하는대로 작동 (모든 유형의 키 가드 화면을 완전히 제거합니다.)하지만 때로는 "슬라이드 잠금 해제"키 가드 화면이 표시됩니다.여기에 어떤 문제가 있는지 알고 계십니까? 안정적인 작동 방법 (적어도 모든 경우에서 "슬라이드 잠금 해제"또는 키 가드 제거가 필요함)?
미리 도움을 청하십시오. (때로는 완전히 키 가드를 제거하고, 때로는 "슬라이드"키 가드를 표시)
편집
그냥 내 솔루션 작품을 지적하고자하지만 문제는 불안정한 작동한다는 것입니다. 또한 일부 활동을 표시하면서 keyguard를 비활성화하는 대신 장치의 잠금/잠금 해제를 제어하기 위해 서비스에서이 코드를 사용하므로 호출 할 수 없습니다. getWindow().addFlags(..)
원인 : 대다.
아마도이 불안정한 행동을 다루는 사람이 있을지 모르겠습니다.
여기에 LocalStorage 클래스 란 무엇입니까? 당신은 어떤 종류의 웹 프레임 워크에서 이것을하고 있습니까? 또한 실용적인 솔루션을 얻었습니까? 나는 이것을 DPC에 구현하려고한다. – Keilaron