在我的应用中使用屏幕锁定

Use screen lock in my app

是否可以使用默认安全设置(用户已设置为 phone)作为我的应用程序的锁定或登录机制?我的意思是,当我们重置 phone 时,它会要求输入 phone 密码或模式。

是否可以使用用户设置的默认 android 密码或模式登录我的应用程序?

我的目标是绕过开发工作并使用一些标准的身份验证方式而不让用户记住另一个新密码。

注意: 我知道我可以通过编程锁定屏幕。但是相反,我想在执行任何关键操作之前使用锁作为验证。 (就像 设置 在重置 phone 之前要求输入密码一样。)

实际上,有一个 API 正好可以使用 KeyguardManager

首先获取Keyguard SystemService:

KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);

然后使用以下方式请求身份验证意图:

Intent i = km.createConfirmDeviceCredentialIntent(title,description);

使用 startActivityForResult(Intent, int) 启动此意图并检查 RESULT_OK 用户是否成功完成挑战。

这是 API 21 级的。 以前的版本可能适用于 KeyguardLock.

我只是在关注 @agi,没有什么改进,

    public class MainActivity extends AppCompatActivity {
    private static int CODE_AUTHENTICATION_VERIFICATION=241;

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

        KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
        if(km.isKeyguardSecure()) {

            Intent i = km.createConfirmDeviceCredentialIntent("Authentication required", "password");
            startActivityForResult(i, CODE_AUTHENTICATION_VERIFICATION);
        }
        else
            Toast.makeText(this, "No any security setup done by user(pattern or password or pin or fingerprint", Toast.LENGTH_SHORT).show();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode==RESULT_OK && requestCode==CODE_AUTHENTICATION_VERIFICATION)
        {
            Toast.makeText(this, "Success: Verified user's identity", Toast.LENGTH_SHORT).show();
        }
        else
        {
            Toast.makeText(this, "Failure: Unable to verify user's identity", Toast.LENGTH_SHORT).show();
        }
    }
}