Android 在我的应用程序中使用屏幕锁定

Android 在我的应用程序中使用屏幕锁定,android,security,lockscreen,android-authenticator,Android,Security,Lockscreen,Android Authenticator,是否可以使用用户为手机设置的默认安全设置作为我的应用程序的锁定或登录机制?我的意思是,当我们重置手机时,它会要求输入手机密码或模式 我是否可以使用用户设置的默认android密码或模式登录到我的应用程序 我的目标是绕过开发工作,使用一些标准的身份验证方法,而不让用户记住另一个新密码 注意:我知道我可以通过编程方式锁定屏幕。但是,我想在执行任何关键操作之前使用锁作为验证。(就像设置在重置手机之前要求输入密码一样。)实际上,有一个API可以使用 首先,在Keyguard系统服务中获得一个: Keyg

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

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

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


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

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

首先,在Keyguard系统服务中获得一个:

KeyguardManager km = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
然后使用以下命令请求身份验证意图:

Intent i = km.createConfirmDeviceCredentialIntent(title,description);
使用
startActivityForResult(intent,int)
启动此意图,如果用户成功完成挑战,则检查
RESULT\u OK

这是针对API级别21的。
以前的版本可能会与兼容。

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

你试过了吗?这些都是锁定“设备”的。我不想把屏幕完全锁上。相反,我想在执行任何关键操作之前使用锁作为验证。(就像在重置手机前询问密码一样)简短回答:不,现在不行。@Mangesh:你确定你标记为已接受的Commonware的答案是正确的吗?下面agi的另一个答案是,它不是,并且已经收到了大量的投票。我无法亲自验证,但如果agi的答案确实正确,您可能会想接受它。正如@agi所添加的,这仅适用于操作系统棒棒糖和更高版本。若要在kotlin中添加
onActivityResult
,请在意图之后添加
。否则,数据可能为null,它将引发异常
onActivityResult(requestCode:Int,resultCode:Int,data:Intent?{……}
@AbhijitKurane每次打开我的应用程序时,如果我想问我密码,我该怎么办?我的意思是,当我临时退出应用程序检查电子邮件,然后返回到我的应用程序时,我想输入密码。我在onResume方法中编写了上述代码,但它不起作用,并且输入了一个无限循环。我正在手机中使用指纹,当运行此代码要求pin时。你有什么解决办法吗?@Cecilpul指纹应该和PIN一起工作。您可以在锁屏上看到指纹图标,当您运行intent时会出现该图标。