Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0e562c95 authored by chengfeitao's avatar chengfeitao
Browse files

Better biometric subtitle with createConfirmDeviceCredentialIntent() API

Test: Tested manually with repro steps

Fixes: 224967328
Change-Id: I788abc0714502cbf857d8e18d51e69a5d54a0387
parent 50595d14
Loading
Loading
Loading
Loading
+23 −0
Original line number Diff line number Diff line
@@ -187,6 +187,19 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
            return this;
        }

        /**
         * Shows a default subtitle for the prompt if the subtitle would otherwise be
         * null or empty. Currently for internal use only.
         * @return This builder.
         * @hide
         */
        @RequiresPermission(USE_BIOMETRIC_INTERNAL)
        @NonNull
        public Builder setUseDefaultSubtitle() {
            mPromptInfo.setUseDefaultSubtitle(true);
            return this;
        }

        /**
         * Optional: Sets a description that will be shown on the prompt.
         * @param description The description to display.
@@ -628,6 +641,16 @@ public class BiometricPrompt implements BiometricAuthenticator, BiometricConstan
        return mPromptInfo.getSubtitle();
    }

    /**
     * Whether to use a default subtitle. For internal use only.
     * @return See {@link Builder#setUseDefaultSubtitle()}.
     * @hide
     */
    @RequiresPermission(USE_BIOMETRIC_INTERNAL)
    public boolean shouldUseDefaultSubtitle() {
        return mPromptInfo.isUseDefaultSubtitle();
    }

    /**
     * Gets the description for the prompt, as set by {@link Builder#setDescription(CharSequence)}.
     * @return The description for the prompt, or null if the prompt has no description.
+13 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ public class PromptInfo implements Parcelable {
    @NonNull private CharSequence mTitle;
    private boolean mUseDefaultTitle;
    @Nullable private CharSequence mSubtitle;
    private boolean mUseDefaultSubtitle;
    @Nullable private CharSequence mDescription;
    @Nullable private CharSequence mDeviceCredentialTitle;
    @Nullable private CharSequence mDeviceCredentialSubtitle;
@@ -56,6 +57,7 @@ public class PromptInfo implements Parcelable {
        mTitle = in.readCharSequence();
        mUseDefaultTitle = in.readBoolean();
        mSubtitle = in.readCharSequence();
        mUseDefaultSubtitle = in.readBoolean();
        mDescription = in.readCharSequence();
        mDeviceCredentialTitle = in.readCharSequence();
        mDeviceCredentialSubtitle = in.readCharSequence();
@@ -94,6 +96,7 @@ public class PromptInfo implements Parcelable {
        dest.writeCharSequence(mTitle);
        dest.writeBoolean(mUseDefaultTitle);
        dest.writeCharSequence(mSubtitle);
        dest.writeBoolean(mUseDefaultSubtitle);
        dest.writeCharSequence(mDescription);
        dest.writeCharSequence(mDeviceCredentialTitle);
        dest.writeCharSequence(mDeviceCredentialSubtitle);
@@ -128,6 +131,8 @@ public class PromptInfo implements Parcelable {
            return true;
        } else if (mUseDefaultTitle) {
            return true;
        } else if (mUseDefaultSubtitle) {
            return true;
        } else if (mDeviceCredentialTitle != null) {
            return true;
        } else if (mDeviceCredentialSubtitle != null) {
@@ -154,6 +159,10 @@ public class PromptInfo implements Parcelable {
        mSubtitle = subtitle;
    }

    public void setUseDefaultSubtitle(boolean useDefaultSubtitle) {
        mUseDefaultSubtitle = useDefaultSubtitle;
    }

    public void setDescription(CharSequence description) {
        mDescription = description;
    }
@@ -227,6 +236,10 @@ public class PromptInfo implements Parcelable {
        return mSubtitle;
    }

    public boolean isUseDefaultSubtitle() {
        return mUseDefaultSubtitle;
    }

    public CharSequence getDescription() {
        return mDescription;
    }
+8 −0
Original line number Diff line number Diff line
@@ -563,6 +563,14 @@ public class BiometricService extends SystemService {
                }
            }

            // Set the default subtitle if necessary.
            if (promptInfo.isUseDefaultSubtitle()) {
                if (TextUtils.isEmpty(promptInfo.getSubtitle())) {
                    promptInfo.setSubtitle(getContext()
                            .getString(R.string.biometric_dialog_default_subtitle));
                }
            }

            final long requestId = mRequestCounter.get();
            mHandler.post(() -> handleAuthenticate(
                    token, requestId, operationId, userId, receiver, opPackageName, promptInfo));