在我的应用中使用屏幕锁定
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();
}
}
}
是否可以使用默认安全设置(用户已设置为 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();
}
}
}