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

时间:2015-04-05 10:43:39

标签: android security lockscreen android-authenticator

是否可以将用户设置为手机的默认安全设置用作我的应用的锁定或登录机制?我的意思是,当我们重置手机时,它会询问手机密码或图案。

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

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

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

2 个答案:

答案 0 :(得分:25)

实际上,使用KeyguardManager确实有一个API。

首先获得Keyguard SystemService:

KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);

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

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

使用startActivityForResult(Intent, int)启动此意图,如果用户成功完成挑战,请检查RESULT_OK

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

答案 1 :(得分:9)

我只是关注 @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();
        }
    }
}