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

标签 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();

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

最佳答案

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

我建议您使用服务类作为上下文启动 adminComponent。

关于android - 如何在 Android 中使用图案/密码模式锁定/解锁屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685640/

相关文章:

java.lang.ClassCastException : CLASS/Activity cannot be cast to MainActivity

android - 如何使用Android-L预览任务锁定?

android - 如何在 Android 5.0 的锁屏或主屏幕上显示小部件/自定义布局

android - Android 的密度桶之间的界限到底是什么?

android - 模拟器屏幕看起来不同

android - 如何使 gridView 的所有项目具有相同的大小?

android - 在 Activity 中模拟主页按钮行为

android - 我可以从我的 android 应用程序中识别新邮件的 gmail 通知吗

android - 非根设备 (Android L) 上的设备所有者,没有 NFC,使用 adb shell,dpm set-device-owner

Android 正确的屏幕密度