如何在Android中使用模式/密码模式锁定/解锁屏幕?

时间:2016-09-25 10:05:43

标签: android android-5.0-lollipop android-screen

我成功地使用Android L中的DevicePolicyManagerKeyguardManager来锁定/解锁我的屏幕。当我使用滑动模式(无安全性)锁定/解锁屏幕时,它运行良好。但是,当我使用模式和密码模式锁定/解锁屏幕时,我无法锁定/解锁它(更高的安全性)。是否可以使用DevicePolicyManagerKeyguardManager以高安全性锁定/解锁屏幕。 ?这就是我所做的

protected static final int REQUEST_ENABLE = 0;
DevicePolicyManager devicePolicyManager;
ComponentName adminComponent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button button = (Button) findViewById(R.id.btn);
    button.setOnClickListener(btnListener);

}

//LOCK
Button.OnClickListener btnListener = new Button.OnClickListener() {
    public void onClick(View v) {
        adminComponent = new ComponentName(MainActivity.this, Darclass.class);
        devicePolicyManager = (DevicePolicyManager) getSystemService(Context.DEVICE_POLICY_SERVICE);

        if (!devicePolicyManager.isAdminActive(adminComponent)) {

            Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
            intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, adminComponent);
            startActivityForResult(intent, REQUEST_ENABLE);
        } else {
            devicePolicyManager.lockNow();
        }

    }
}; 

//UNLOCK
 private KeyguardManager keyguardManager;
 KeyguardManager.KeyguardLock kl;
 keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE);
 kl = keyguardManager.newKeyguardLock("MyKeyguardLock");
 kl.disableKeyguard();

请注意,我在服务中使用它。

1 个答案:

答案 0 :(得分:0)

您提到您正在使用服务中的代码,但在构建adminComponent ComponentName对象时,您提供MainActivity.this作为您的上下文!如果您的MainActivity当前未运行,则MainActivity.this可能为NULL。

我建议您使用Service类作为Context启动adminComponent。