# PrepareGetCredentialResponse

Artifact: [androidx.credentials:credentials](https://developer.android.com/jetpack/androidx/releases/credentials) [View Source](https://cs.android.com/search?q=file:androidx/credentials/PrepareGetCredentialResponse.kt+class:androidx.credentials.PrepareGetCredentialResponse) Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

*** ** * ** ***

<br />

```
@RequiresApi(value = 34)
public final class PrepareGetCredentialResponse
```

<br />

*** ** * ** ***

A response object that indicates the get-credential prefetch work is complete and provides metadata about it. It can then be used to issue the full credential retrieval flow via the `https://developer.android.com/reference/androidx/credentials/CredentialManager#getCredential(android.content.Context,androidx.credentials.GetCredentialRequest)` (Kotlin) / `https://developer.android.com/reference/androidx/credentials/CredentialManager#getCredentialAsync(android.content.Context,androidx.credentials.GetCredentialRequest,android.os.CancellationSignal,java.util.concurrent.Executor,androidx.credentials.CredentialManagerCallback)` (Java) method to perform the remaining flows such as consent collection and credential selection, to officially retrieve a credential.

For now this API requires Android U (level 34). However, it is designed with backward compatibility in mind and can potentially be made accessible \<34 if any provider decides to support that.

This class should be constructed using the Builder (see below) for tests/prod usage.

| Throws |
|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-null-pointer-exception/index.html` | If `https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#pendingGetCredentialHandle()` is null at API level \>= 34. |

## Summary

| ### Nested types |
|---|
| `@https://developer.android.com/reference/androidx/annotation/RequiresApi(value = 34) public final class https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse.PendingGetCredentialHandle` A handle that represents a pending get-credential operation. |
| `@https://developer.android.com/reference/androidx/annotation/VisibleForTesting public final class https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse.TestBuilder` A builder for `https://developer.android.com/reference/android/credentials/PrepareGetCredentialResponse.html` for test use only. |

| ### Public methods |
|---|---|
| `final Function1<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Boolean.html>` | `https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#getCredentialTypeDelegate()()` whether the response has a credential result handler |
| `final Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Boolean.html>` | `https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#getHasAuthResultsDelegate()()` whether the response has auth results |
| `final Function0<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/Boolean.html>` | `https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#getHasRemoteResultsDelegate()()` whether the response has remote results |
| `final https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse.PendingGetCredentialHandle` | `https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#getPendingGetCredentialHandle()()` a handle that represents this pending get-credential operation; pass this handle to `https://developer.android.com/reference/androidx/credentials/CredentialManager#getCredential(android.content.Context,androidx.credentials.GetCredentialRequest)` (Kotlin) / `https://developer.android.com/reference/androidx/credentials/CredentialManager#getCredentialAsync(android.content.Context,androidx.credentials.GetCredentialRequest,android.os.CancellationSignal,java.util.concurrent.Executor,androidx.credentials.CredentialManagerCallback)` (Java) to perform the remaining flows to officially retrieve a credential. |
| `final boolean` | `@https://developer.android.com/reference/androidx/annotation/RequiresPermission(value = "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS") https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#hasAuthenticationResults()()` Returns true if the user has any candidate authentication actions (locked credential supplier), and false otherwise. |
| `final boolean` | `@https://developer.android.com/reference/androidx/annotation/RequiresPermission(value = "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS") https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#hasCredentialResults(kotlin.String)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html credentialType)` Returns true if the user has any candidate credentials for the given {@code credentialType}, and false otherwise. |
| `final boolean` | `@https://developer.android.com/reference/androidx/annotation/RequiresPermission(value = "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS") https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#hasRemoteResults()()` Returns true if the user has any candidate remote credential results, and false otherwise. |
| `final boolean` | `https://developer.android.com/reference/androidx/credentials/PrepareGetCredentialResponse#isNullHandlesForTest()()` whether to support null handles for test |

## Public methods

### getCredentialTypeDelegate

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
public final Function1<@NonNull String, @NonNull Boolean> getCredentialTypeDelegate()
```

whether the response has a credential result handler

### getHasAuthResultsDelegate

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
public final Function0<@NonNull Boolean> getHasAuthResultsDelegate()
```

whether the response has auth results

### getHasRemoteResultsDelegate

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
public final Function0<@NonNull Boolean> getHasRemoteResultsDelegate()
```

whether the response has remote results

### getPendingGetCredentialHandle

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
public final PrepareGetCredentialResponse.PendingGetCredentialHandle getPendingGetCredentialHandle()
```

a handle that represents this pending get-credential operation; pass this handle to `https://developer.android.com/reference/androidx/credentials/CredentialManager#getCredential(android.content.Context,androidx.credentials.GetCredentialRequest)` (Kotlin) / `https://developer.android.com/reference/androidx/credentials/CredentialManager#getCredentialAsync(android.content.Context,androidx.credentials.GetCredentialRequest,android.os.CancellationSignal,java.util.concurrent.Executor,androidx.credentials.CredentialManagerCallback)` (Java) to perform the remaining flows to officially retrieve a credential.

### hasAuthenticationResults

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
@RequiresPermission(value = "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS")
public final boolean hasAuthenticationResults()
```

Returns true if the user has any candidate authentication actions (locked credential supplier), and false otherwise.

Note: this API will always return false at API level \< 34.

### hasCredentialResults

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
@RequiresPermission(value = "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS")
public final boolean hasCredentialResults(@NonNull String credentialType)
```

Returns true if the user has any candidate credentials for the given {@code credentialType}, and false otherwise.

Note: this API will always return false at API level \< 34.

### hasRemoteResults

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
@RequiresPermission(value = "android.permission.CREDENTIAL_MANAGER_QUERY_CANDIDATE_CREDENTIALS")
public final boolean hasRemoteResults()
```

Returns true if the user has any candidate remote credential results, and false otherwise.

Note: this API will always return false at API level \< 34.

### isNullHandlesForTest

Added in [1.2.0](https://developer.android.com/jetpack/androidx/releases/credentials#1.2.0)

```
public final boolean isNullHandlesForTest()
```

whether to support null handles for test