summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoanne Chung <joannechung@google.com>2022-04-29 20:53:26 +0800
committerJoanne Chung <joannechung@google.com>2022-04-29 20:53:26 +0800
commit7a62cf901d6c7340cf8521ef21d0a47f975572b2 (patch)
treeb712bab9a252ddd3a1f71956609dca7bae7858a2
parentb6261fb9a7d0d580e40e0c38bfb289ed294e9acc (diff)
downloaddevelopment-7a62cf901d6c7340cf8521ef21d0a47f975572b2.tar.gz
Add dialog present support for AutofillService.
Bug: 229057036 Test: manual. Can show filldialog with Autofill sample Change-Id: If3266fbbba12cbcf8b4641da53d6b809f56d83f7
-rw-r--r--samples/InlineFillService/src/com/example/android/inlinefillservice/InlineFillService.java9
-rw-r--r--samples/InlineFillService/src/com/example/android/inlinefillservice/ResponseHelper.java14
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);