You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android 12 AOSP中请求设备锁/生物识别认证实现系统级应用锁?

在Android 12 AOSP中调用设备锁密码验证实现系统级应用锁

在Android 12的AOSP环境下,你可以通过KeyguardManager提供的API唤起系统原生的设备密码验证界面,验证通过后即可放行应用访问,具体实现步骤如下:

  • 1. 检查设备是否已设置密码
    首先通过KeyguardManager判断设备是否启用了安全锁(密码、PIN、图案均可),确保后续验证流程可行:

    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
    if (!keyguardManager.isDeviceSecure()) {
        // 设备未设置密码,无法进行验证
        return;
    }
    
  • 2. 唤起系统密码验证界面
    使用createConfirmDeviceCredentialIntent方法创建验证Intent,启动后会弹出系统默认的密码输入界面:

    private static final int REQUEST_CODE_VERIFY_PASSWORD = 1001;
    
    // 创建验证Intent,参数为弹窗标题和提示文本
    Intent verifyIntent = keyguardManager.createConfirmDeviceCredentialIntent(
        "应用锁验证", 
        "请输入设备密码以解锁该应用"
    );
    
    if (verifyIntent != null) {
        startActivityForResult(verifyIntent, REQUEST_CODE_VERIFY_PASSWORD);
    }
    
  • 3. 处理验证结果
    在onActivityResult中接收验证结果,根据结果决定是否允许应用启动:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE_VERIFY_PASSWORD) {
            if (resultCode == RESULT_OK) {
                // 密码验证通过,执行应用启动逻辑
            } else {
                // 验证失败(取消/密码错误),拦截应用访问
                finish();
            }
        }
    }
    

系统级应用的额外说明

由于你开发的是系统级应用锁,只要应用位于AOSP的/system/app或/priv-app目录下,无需额外申请权限即可使用上述API。普通第三方应用需在Manifest中添加android.permission.USE_BIOMETRIC权限,但系统级应用无需此操作。

注意事项

  • 必须使用系统原生验证界面,不可自行实现密码输入,否则无法保证与设备锁密码的一致性;
  • Android 12中createConfirmDeviceCredentialIntent未被废弃,可稳定使用;
  • 若需拦截所有应用启动,需结合ActivityManager的应用启动监听逻辑(如注册ActivityLifecycleCallbacks),在应用启动前触发上述密码验证流程。

内容的提问来源于stack exchange,提问作者Anerudh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:40:32