microg/GmsCore · error · IllegalArgumentException

pendingIntent or createCredentialResponse must be specified.

Error message

pendingIntent or createCredentialResponse must be specified.

What it means

Constructor validation in CreateCredentialHandle: both optional fields are unset — no pendingIntent and no createCredentialResponse — while at least one is required for the credential-selector flow to act on the handle.

Source

Thrown at play-services-identity-credentials/src/main/java/com/google/android/gms/identitycredentials/CreateCredentialHandle.java:43

@SafeParcelable.Class
public class CreateCredentialHandle extends AbstractSafeParcelable {
    @Field(value = 1, getterName = "getPendingIntent")
    @Nullable
    private final PendingIntent pendingIntent;
    @Field(value = 2, getterName = "getCreateCredentialResponse")
    @Nullable
    private final CreateCredentialResponse createCredentialResponse;

    /**
     * constructs an instance of {@link CreateCredentialHandle}
     *
     * @param pendingIntent            the {@link PendingIntent} to launch the credential selector UI
     * @param createCredentialResponse the {@link CreateCredentialResponse} if no UI is needed
     */
    @Constructor
    public CreateCredentialHandle(@Param(1) @Nullable PendingIntent pendingIntent, @Param(2) @Nullable CreateCredentialResponse createCredentialResponse) {
        if (pendingIntent == null && createCredentialResponse == null) {
            throw new IllegalArgumentException("pendingIntent or createCredentialResponse must be specified.");
        }
        this.pendingIntent = pendingIntent;
        this.createCredentialResponse = createCredentialResponse;
    }

    /**
     * the {@link CreateCredentialResponse} if no UI is needed
     */
    @Nullable
    public CreateCredentialResponse getCreateCredentialResponse() {
        return createCredentialResponse;
    }

    /**
     * the {@link PendingIntent} to launch the credential selector UI
     */
    @Nullable
    public PendingIntent getPendingIntent() {

View on GitHub (pinned to 157c9d86ac)

Solutions

  1. Provide a non-null PendingIntent or CreateCredentialResponse when constructing the handle
  2. Treat a null-both record as invalid and re-request the credential
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at play-services-identity-credentials/src/main/java/com/google/android/gms/identitycredentials/CreateCredentialHandle.java:43 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of microg/GmsCore@157c9d86ac (2026-09-06). Data as JSON: /api/errors/d8cdc16418e0b62a. Report an issue: GitHub.