diff options
author | Joanne Chung <joannechung@google.com> | 2022-04-29 20:53:26 +0800 |
---|---|---|
committer | Joanne Chung <joannechung@google.com> | 2022-04-29 20:53:26 +0800 |
commit | 7a62cf901d6c7340cf8521ef21d0a47f975572b2 (patch) | |
tree | b712bab9a252ddd3a1f71956609dca7bae7858a2 | |
parent | b6261fb9a7d0d580e40e0c38bfb289ed294e9acc (diff) | |
download | development-7a62cf901d6c7340cf8521ef21d0a47f975572b2.tar.gz |
Add dialog present support for AutofillService.
Bug: 229057036
Test: manual. Can show filldialog with Autofill sample
Change-Id: If3266fbbba12cbcf8b4641da53d6b809f56d83f7
2 files changed, 21 insertions, 2 deletions
diff --git a/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java b/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java index cce61378f..1fa58c1c1 100644 --- a/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java +++ b/samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java @@ -134,8 +134,13 @@ public class InlineFillService extends AutofillService { response.addDataset(InlineRequestHelper.createInlineActionDataset(context, fields, inlineRequest.get(), R.drawable.ic_settings)); } + // 3. Add fill dialog + RemoteViews dialogPresentation = + ResponseHelper.newDatasetPresentation(packageName, "Dialog Header"); + response.setDialogHeader(dialogPresentation); + response.setFillDialogTriggerIds(fields.valueAt(0), fields.valueAt(1)); - // 3.Add save info + // 4.Add save info Collection<AutofillId> ids = fields.values(); AutofillId[] requiredIds = new AutofillId[ids.size()]; ids.toArray(requiredIds); @@ -143,7 +148,7 @@ public class InlineFillService extends AutofillService { // We're simple, so we're generic new SaveInfo.Builder(SaveInfo.SAVE_DATA_TYPE_GENERIC, requiredIds).build()); - // 4.Profit! + // 5.Profit! return response.build(); } diff --git a/samples/InlineFillService/src/com/example/android/inlinefillservice/ResponseHelper.java b/samples/InlineFillService/src/com/example/android/inlinefillservice/ResponseHelper.java index f6e6ab7e8..d33f19cde 100644 --- a/samples/InlineFillService/src/com/example/android/inlinefillservice/ResponseHelper.java +++ b/samples/InlineFillService/src/com/example/android/inlinefillservice/ResponseHelper.java @@ -59,8 +59,10 @@ class ResponseHelper { // Set presentation final Presentations.Builder fieldPresentationsBuilder = new Presentations.Builder(); + // Dropdown presentation final RemoteViews presentation = newDatasetPresentation(packageName, displayValue); fieldPresentationsBuilder.setMenuPresentation(presentation); + // Inline presentation if (inlineRequest.isPresent()) { Log.d(TAG, "Found InlineSuggestionsRequest in FillRequest: " + inlineRequest); final InlinePresentation inlinePresentation = @@ -68,6 +70,11 @@ class ResponseHelper { displayValue, index); fieldPresentationsBuilder.setInlinePresentation(inlinePresentation); } + // Dialog presentation + RemoteViews dialogPresentation = + newDatasetPresentation(packageName, "Dialog Presentation " + (index + 1)); + fieldPresentationsBuilder.setDialogPresentation(dialogPresentation); + fieldBuilder.setPresentations(fieldPresentationsBuilder.build()); dataset.setField(id, fieldBuilder.build()); } @@ -92,15 +99,22 @@ class ResponseHelper { Field.Builder fieldBuilder = new Field.Builder(); fieldBuilder.setValue(AutofillValue.forText(value)); + // Dropdown presentation final Presentations.Builder fieldPresentationsBuilder = new Presentations.Builder(); fieldPresentationsBuilder.setMenuPresentation(presentation); + // Inline presentation if (inlineRequest.isPresent()) { final InlinePresentation inlinePresentation = InlineRequestHelper.createInlineDataset(context, inlineRequest.get(), displayValue, index); fieldPresentationsBuilder.setInlinePresentation(inlinePresentation); } + // Dialog presentation + RemoteViews dialogPresentation = + newDatasetPresentation(packageName, "Dialog Presentation " + (index + 1)); + fieldPresentationsBuilder.setDialogPresentation(dialogPresentation); + fieldBuilder.setPresentations(fieldPresentationsBuilder.build()); lockedDataset.setField(id, fieldBuilder.build()); lockedDataset.setId(null).setAuthentication(authentication); |