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

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

 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当前未运行,则MainActivity.this可能为NULL。

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