Better biometric subtitle with createConfirmDeviceCredentialIntent() API
Test: Tested manually with repro steps Fixes: 224967328 Change-Id: I788abc0714502cbf857d8e18d51e69a5d54a0387
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user