首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >keyguardManager.createConfirmDeviceCredentialIntent()返回RESULT_CANCELEDon Android q

keyguardManager.createConfirmDeviceCredentialIntent()返回RESULT_CANCELEDon Android q
EN

Stack Overflow用户
提问于 2019-11-11 08:56:42
回答 1查看 1.5K关注 0票数 2

我有一个应用程序,在该应用程序中,我请求用户使用KeyguardManager通过PIN在应用程序中进行身份验证。

重要的是,我在清单中对我的活动有android:showOnLockScreen="true",所以当设备被锁定时,我的活动显示,我点击“登录”按钮,这个按钮调用showAuthenticationScreen(),我在onActivityResult()中接收RESULT_CANCELED

代码语言:javascript
复制
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
private void showAuthenticationScreen() {
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
    if (keyguardManager == null) {
        return;
    }

    Intent kgIntent = keyguardManager.createConfirmDeviceCredentialIntent(getString(R.string.nnl_kg_title), getKgPrompt());

    if (kgIntent != null) {
        startActivityForResult(kgIntent, KG_REQUEST_ID);
    }
}

我查看了系统日志,发现我从BiometricService获得了这个错误,并收到了“取消疾病控制中心”的消息。以下是系统日志的某些部分。

代码语言:javascript
复制
936   936 I ActivityTaskManager: START u0 {act=android.app.action.CONFIRM_DEVICE_CREDENTIAL_WITH_USER flg=0x8080000 pkg=com.android.settings cmp=com.android.settings/.password.ConfirmDeviceCredentialActivity$InternalActivity (has extras)} from
uid 1000
11-11 10:54:53.076   936   972 D ActivityTaskManager: Top Process State changed to PROCESS_STATE_TOP_SLEEPING
11-11 10:54:53.092   936  1032 W ProcessStats: Tracking association SourceState{2c15fa1 com.android.settings/1000 Top #565108} whose proc state 1 is better than process ProcessState{54a9784 com.google.android.gms.persistent/10029 pkg=com.google.android.gms} proc st
ate 2 (9 skipped)
11-11 10:54:53.126   936   936 D BiometricService: Creating auth session. Modality: 1, cookie: 1632337634
11-11 10:54:53.127   936   936 V FingerprintService: startAuthentication(com.android.settings)
11-11 10:54:53.128   936   936 V FingerprintService: Returning cookie: 1632337634
11-11 10:54:53.128   936   936 D BiometricService: Matched cookie: 1632337634, 0 remaining
11-11 10:54:53.128   936   936 V FingerprintService: starting client AuthenticationClientImpl(com.android.settings) cookie: 1632337634/1632337634
11-11 10:54:53.135   936   936 W FingerprintService: client com.android.settings is authenticating...
11-11 10:54:53.161   936   936 D BiometricService: Cancelling from CDC
11-11 10:54:53.162   936   936 V FingerprintService: Stopping client com.android.settings, fromClient: false
11-11 10:54:53.173   936   936 W FingerprintService: client com.android.settings is no longer authenticating
11-11 10:54:53.177   936  3056 D ActivityTaskManager: Top Process State changed to PROCESS_STATE_TOP
11-11 10:54:53.195   936   936 V FingerprintService: handleError(client=com.android.settings, error = 5)
11-11 10:54:53.195   936   936 V FingerprintService: Done with client: com.android.settings
11-11 10:54:53.196   936   936 D BiometricService: Error: 5 cookie: 1632337634
11-11 10:54:53.285   936  3041 I ActivityTaskManager: Activity reported stop, but no longer stopping: ActivityRecord{9b6d8b u0 com.natigbabayev.biometricprompt/.MainActivity t1936}

这有什么解决办法吗?即使设备被锁定,我仍然可以要求用户使用PIN进行身份验证吗?提前谢谢你们。

EN

回答 1

Stack Overflow用户

发布于 2021-02-15 05:13:39

您从未在当前活动中使用此函数- onActivityResult(int requestCode, int resultCode, Intent data)

它用于处理来自活动的返回值,该活动将结果代码返回到当前活动中。

代码语言:javascript
复制
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == KG_REQUEST_ID){
        if(resultCode == Activity.RESULT_OK) {
            // Your Code if Authenticated Successfully.
        }
        if(resultCode == Activity.RESULT_CANCELED) {
            // Your Code If Canceled.
        }
    }
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58798205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档