AutofillManager
  public
  
  final
  
  class
  AutofillManager
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| โณ | android.view.autofill.AutofillManager | 
The AutofillManager class provides ways for apps and custom views to
 integrate with the Autofill Framework lifecycle.
 
To learn about using Autofill in your app, read the Autofill Framework guides.
Autofill lifecycle
The autofill lifecycle starts with the creation of an autofill context associated with an activity context. The autofill context is created when one of the following methods is called for the first time in an activity context, and the current user has an enabled autofill service:
- notifyViewEntered(android.view.View)
- notifyViewEntered(android.view.View, int, android.graphics.Rect)
- requestAutofill(android.view.View)
Typically, the context is automatically created when the first view of the activity is
 focused because View.onFocusChanged() indirectly calls
 notifyViewEntered(android.view.View). App developers can call requestAutofill(android.view.View) to
 explicitly create it (for example, a custom view developer could offer a contextual menu action
 in a text-field view to let users manually request autofill).
 
After the context is created, the Android System creates a ViewStructure
 that represents the view hierarchy by calling
 View.dispatchProvideAutofillStructure(android.view.ViewStructure, int) in the root views
 of all application windows. By default, dispatchProvideAutofillStructure() results in
 subsequent calls to View.onProvideAutofillStructure(android.view.ViewStructure, int) and
 View.onProvideAutofillVirtualStructure(android.view.ViewStructure, int) for each view in
 the hierarchy.
 
The resulting ViewStructure is then passed to the autofill service, which
 parses it looking for views that can be autofilled. If the service finds such views, it returns
 a data structure to the Android System containing the following optional info:
 
- Datasets used to autofill subsets of views in the activity.
- Id of views that the service can save their values for future autofilling.
When the service returns datasets, the Android System displays an autofill dataset picker
 UI associated with the view, when the view is focused on and is part of a dataset.
 The application can be notified when the UI is shown by registering an
 AutofillCallback through registerCallback(android.view.autofill.AutofillManager.AutofillCallback). When the user
 selects a dataset from the UI, all views present in the dataset are autofilled, through
 calls to View.autofill(AutofillValue) or View.autofill(SparseArray).
 
When the service returns ids of savable views, the Android System keeps track of changes made to these views, so they can be used to determine if the autofill save UI is shown later.
The context is then finished when one of the following occurs:
Finally, after the autofill context is commited (i.e., not cancelled), the Android System shows an autofill save UI if the value of savable views have changed. If the user selects the option to Save, the current value of the views is then sent to the autofill service.
Additional notes
It is safe to call AutofillManager methods from any thread.
 
 Requires the PackageManager#FEATURE_AUTOFILL feature which can be detected using PackageManager.hasSystemFeature(String).
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        class | AutofillManager.AutofillCallbackCallback for autofill related events. | 
| Constants | |
|---|---|
| String | EXTRA_ASSIST_STRUCTUREIntent extra: The assist structure which captures the filled screen. | 
| String | EXTRA_AUTHENTICATION_RESULTIntent extra: The result of an authentication operation. | 
| String | EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASETIntent extra: The optional boolean extra field provided by the
  | 
| String | EXTRA_CLIENT_STATEIntent extra: The optional extras provided by the
  | 
| String | EXTRA_INLINE_SUGGESTIONS_REQUESTIntent extra: the  | 
| Public methods | |
|---|---|
| 
        
        
        
        
        
        void | 
      cancel()
      Called to indicate the current autofill context should be cancelled. | 
| 
        
        
        
        
        
        void | 
      commit()
      Called to indicate the current autofill context should be commited. | 
| 
        
        
        
        
        
        void | 
      disableAutofillServices()
      If the app calling this API has enabled autofill services they will be disabled. | 
| 
        
        
        
        
        
        ComponentName | 
      getAutofillServiceComponentName()
      Returns the component name of the  | 
| 
        
        
        
        
        
        List<String> | 
      getAvailableFieldClassificationAlgorithms()
      Gets the name of all algorithms currently available for field classification. | 
| 
        
        
        
        
        
        String | 
      getDefaultFieldClassificationAlgorithm()
      Gets the name of the default algorithm used for field classification. | 
| 
        
        
        
        
        
        AutofillId | 
      getNextAutofillId()
      Gets the next unique autofill ID for the activity context. | 
| 
        
        
        
        
        
        UserData | 
      getUserData()
      Gets the user data used for field classification. | 
| 
        
        
        
        
        
        String | 
      getUserDataId()
      Gets the id of the  | 
| 
        
        
        
        
        
        boolean | 
      hasEnabledAutofillServices()
      Returns  | 
| 
        
        
        
        
        
        boolean | 
      isAutofillSupported()
      Returns  | 
| 
        
        
        
        
        
        boolean | 
      isEnabled()
      Checks whether autofill is enabled for the current user. | 
| 
        
        
        
        
        
        boolean | 
      isFieldClassificationEnabled()
      Checks if field classification is enabled. | 
| 
        
        
        
        
        
        void | 
      notifyValueChanged(View view)
      Called to indicate the value of an autofillable  | 
| 
        
        
        
        
        
        void | 
      notifyValueChanged(View view, int virtualId, AutofillValue value)
      Called to indicate the value of an autofillable virtual view has changed. | 
| 
        
        
        
        
        
        void | 
      notifyViewClicked(View view)
      Called to indicate a  | 
| 
        
        
        
        
        
        void | 
      notifyViewClicked(View view, int virtualId)
      Called to indicate a virtual view has been clicked. | 
| 
        
        
        
        
        
        void | 
      notifyViewEntered(View view)
      Called when a  | 
| 
        
        
        
        
        
        void | 
      notifyViewEntered(View view, int virtualId, Rect absBounds)
      Called when a virtual view that supports autofill is entered. | 
| 
        
        
        
        
        
        void | 
      notifyViewExited(View view, int virtualId)
      Called when a virtual view that supports autofill is exited. | 
| 
        
        
        
        
        
        void | 
      notifyViewExited(View view)
      Called when a  | 
| 
        
        
        
        
        
        void | 
      notifyViewVisibilityChanged(View view, int virtualId, boolean isVisible)
      Called when a virtual view's visibility changed. | 
| 
        
        
        
        
        
        void | 
      notifyViewVisibilityChanged(View view, boolean isVisible)
      Called when a  | 
| 
        
        
        
        
        
        void | 
      notifyVirtualViewsReady(View view, SparseArray<VirtualViewFillInfo> infos)
      This method was deprecated in API level 36. This function will not do anything. Showing fill dialog is now fully controlled by the framework and the autofill provider. | 
| 
        
        
        
        
        
        void | 
      registerCallback(AutofillManager.AutofillCallback callback)
      Registers a  | 
| 
        
        
        
        
        
        void | 
      requestAutofill(View view, int virtualId, Rect absBounds)
      Explicitly requests a new autofill context for virtual views. | 
| 
        
        
        
        
        
        void | 
      requestAutofill(View view)
      Explicitly requests a new autofill context. | 
| 
        
        
        
        
        
        void | 
      setUserData(UserData userData)
      Sets the  Note: This method should only be called by an app providing an autofill service, and it's ignored if the caller currently doesn't have an enabled autofill service for the user. | 
| 
        
        
        
        
        
        boolean | 
      showAutofillDialog(View view, int virtualId)
      This method was deprecated in API level 36. This function will not do anything. Showing fill dialog is now fully controlled by the framework and the autofill provider. | 
| 
        
        
        
        
        
        boolean | 
      showAutofillDialog(View view)
      This method was deprecated in API level 36. This function will not do anything. Showing fill dialog is now fully controlled by the framework and the autofill provider. | 
| 
        
        
        
        
        
        void | 
      unregisterCallback(AutofillManager.AutofillCallback callback)
      Unregisters a  | 
| Inherited methods | |
|---|---|
Constants
EXTRA_ASSIST_STRUCTURE
public static final String EXTRA_ASSIST_STRUCTURE
Intent extra: The assist structure which captures the filled screen.
 Type: AssistStructure
Constant Value: "android.view.autofill.extra.ASSIST_STRUCTURE"
EXTRA_AUTHENTICATION_RESULT
public static final String EXTRA_AUTHENTICATION_RESULT
Intent extra: The result of an authentication operation. It is
 either a fully populated FillResponse
 or a fully populated Dataset if
 a response or a dataset is being authenticated respectively.
 
 Type: FillResponse or a
 Dataset
Constant Value: "android.view.autofill.extra.AUTHENTICATION_RESULT"
EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET
public static final String EXTRA_AUTHENTICATION_RESULT_EPHEMERAL_DATASET
Intent extra: The optional boolean extra field provided by the
 AutofillService accompanying the Dataset result of an authentication operation.
 
 Before Build.VERSION_CODES.R, if the authentication result is a
 Dataset, it'll be used to autofill the fields, and also
 replace the existing dataset in the cached FillResponse.
 That means if the user clears the field values, the autofill suggestion will show up again
 with the new authenticated Dataset.
 
 In Build.VERSION_CODES.R, we added an exception to this behavior
 that if the Dataset being authenticated is a pinned dataset (see
 InlinePresentation.isPinned()), the old Dataset will not be
 replaced.
 
 In Build.VERSION_CODES.S, we added this boolean extra field to
 allow the AutofillService to explicitly specify whether
 the returned authenticated Dataset is ephemeral. An ephemeral Dataset will be used to
 autofill once and then thrown away. Therefore, when the boolean extra is set to true, the
 returned Dataset will not replace the old dataset from the existing
 FillResponse. When it's set to false, it will. When it's not
 set, the old dataset will be replaced, unless it is a pinned inline suggestion, which is
 consistent with the behavior in Build.VERSION_CODES.R.
Constant Value: "android.view.autofill.extra.AUTHENTICATION_RESULT_EPHEMERAL_DATASET"
EXTRA_CLIENT_STATE
public static final String EXTRA_CLIENT_STATE
Intent extra: The optional extras provided by the
 AutofillService.
 
For example, when the service responds to a FillCallback.onSuccess(android.service.autofill.FillResponse) with
 a FillResponse that requires authentication, the Intent that launches the
 service authentication will contain the Bundle set by
 FillResponse.Builder.setClientState(Bundle) on this extra.
 
On Android Build.VERSION_CODES.P and higher, the autofill service
 can also add this bundle to the Intent set as the
 result for an authentication request,
 so the bundle can be recovered later on
 SaveRequest.getClientState().
 
 Type: Bundle
Constant Value: "android.view.autofill.extra.CLIENT_STATE"
EXTRA_INLINE_SUGGESTIONS_REQUEST
public static final String EXTRA_INLINE_SUGGESTIONS_REQUEST
Intent extra: the InlineSuggestionsRequest in the
 autofill request.
 
This is filled in the authentication intent so the
 AutofillService can use it to create the inline
 suggestion Dataset in the response, if the original autofill
 request contains the InlineSuggestionsRequest.
Constant Value: "android.view.autofill.extra.INLINE_SUGGESTIONS_REQUEST"
Public methods
cancel
public void cancel ()
Called to indicate the current autofill context should be cancelled.
This method is typically called by Views that manage virtual views; for
 example, when the view is rendering an HTML page with a form and virtual views
 that represent the HTML elements, it should call this method if the user does not post the
 form but moves to another form in this page.
 
Note: This method does not need to be called on regular application lifecycle
 methods such as Activity.finish().
commit
public void commit ()
Called to indicate the current autofill context should be commited.
This method is typically called by Views that manage virtual views; for
 example, when the view is rendering an HTML page with a form and virtual views
 that represent the HTML elements, it should call this method after the form is submitted and
 another page is rendered.
 
Note: This method does not need to be called on regular application lifecycle
 methods such as Activity.finish().
disableAutofillServices
public void disableAutofillServices ()
If the app calling this API has enabled autofill services they will be disabled.
getAutofillServiceComponentName
public ComponentName getAutofillServiceComponentName ()
Returns the component name of the AutofillService that is enabled for the current
 user.
| Returns | |
|---|---|
| ComponentName | This value may be null. | 
getAvailableFieldClassificationAlgorithms
public List<String> getAvailableFieldClassificationAlgorithms ()
Gets the name of all algorithms currently available for field classification.
Note: This method should only be called by an app providing an autofill service, and it returns an empty list if the caller currently doesn't have an enabled autofill service for the user.
| Returns | |
|---|---|
| List<String> | This value cannot be null. | 
getDefaultFieldClassificationAlgorithm
public String getDefaultFieldClassificationAlgorithm ()
Gets the name of the default algorithm used for field classification.
The default algorithm is used when the algorithm on UserData is invalid or not
 set.
 
Note: This method should only be called by an app providing an autofill service, and it's ignored if the caller currently doesn't have an enabled autofill service for the user.
| Returns | |
|---|---|
| String | This value may be null. | 
getNextAutofillId
public AutofillId getNextAutofillId ()
Gets the next unique autofill ID for the activity context.
Typically used to manage views whose content is recycled - see
 View.setAutofillId(AutofillId) for more info.
| Returns | |
|---|---|
| AutofillId | An ID that is unique in the activity, or nullif autofill is not supported in
 theContextassociated with thisAutofillManager. | 
getUserData
public UserData getUserData ()
Gets the user data used for field classification.
Note: This method should only be called by an app providing an autofill service, and it's ignored if the caller currently doesn't have an enabled autofill service for the user.
| Returns | |
|---|---|
| UserData | value previously set by setUserData(android.service.autofill.UserData)ornullif it was
 reset or if the caller currently does not have an enabled autofill service for the user. | 
getUserDataId
public String getUserDataId ()
Gets the id of the UserData used for
 field classification.
 
This method is useful when the service must check the status of the UserData in
 the device without fetching the whole object.
 
Note: This method should only be called by an app providing an autofill service, and it's ignored if the caller currently doesn't have an enabled autofill service for the user.
| Returns | |
|---|---|
| String | id of the UserDatapreviously set bysetUserData(android.service.autofill.UserData)ornullif it was reset or if the caller currently does not have an enabled autofill
 service for the user. | 
hasEnabledAutofillServices
public boolean hasEnabledAutofillServices ()
Returns true if the calling application provides a AutofillService that is
 enabled for the current user, or false otherwise.
| Returns | |
|---|---|
| boolean | |
isAutofillSupported
public boolean isAutofillSupported ()
Returns true if autofill is supported by the current device and
 is supported for this user.
 
Autofill is typically supported, but it could be unsupported in cases like:
- Low-end devices.
- Device policy rules that forbid its usage.
| Returns | |
|---|---|
| boolean | |
isEnabled
public boolean isEnabled ()
Checks whether autofill is enabled for the current user.
Typically used to determine whether the option to explicitly request autofill should
 be offered - see requestAutofill(android.view.View).
| Returns | |
|---|---|
| boolean | whether autofill is enabled for the current user. | 
isFieldClassificationEnabled
public boolean isFieldClassificationEnabled ()
Checks if field classification is enabled.
As field classification is an expensive operation, it could be disabled, either temporarily (for example, because the service exceeded a rate-limit threshold) or permanently (for example, because the device is a low-level device).
Note: This method should only be called by an app providing an autofill service, and it's ignored if the caller currently doesn't have an enabled autofill service for the user.
| Returns | |
|---|---|
| boolean | |
notifyValueChanged
public void notifyValueChanged (View view)
Called to indicate the value of an autofillable View changed.
| Parameters | |
|---|---|
| view | View: view whose value changed. | 
notifyValueChanged
public void notifyValueChanged (View view, int virtualId, AutofillValue value)
Called to indicate the value of an autofillable virtual view has changed.
| Parameters | |
|---|---|
| view | View: the virtual view parent. | 
| virtualId | int: id identifying the virtual child inside the parent view. | 
| value | AutofillValue: new value of the child. | 
notifyViewClicked
public void notifyViewClicked (View view)
Called to indicate a View is clicked.
| Parameters | |
|---|---|
| view | View: view that has been clicked.
 This value cannot benull. | 
notifyViewClicked
public void notifyViewClicked (View view, int virtualId)
Called to indicate a virtual view has been clicked.
| Parameters | |
|---|---|
| view | View: the virtual view parent.
 This value cannot benull. | 
| virtualId | int: id identifying the virtual child inside the parent view. | 
notifyViewEntered
public void notifyViewEntered (View view)
Called when a View that supports autofill is entered.
| Parameters | |
|---|---|
| view | View:Viewthat was entered.
 This value cannot benull. | 
notifyViewEntered
public void notifyViewEntered (View view, int virtualId, Rect absBounds)
Called when a virtual view that supports autofill is entered.
The virtual view boundaries must be absolute screen coordinates. For example, if the
 parent, non-virtual view uses bounds to draw the virtual view inside its Canvas,
 the absolute bounds could be calculated by:
 
   int offset[] = new int[2];
   getLocationOnScreen(offset);
   Rect absBounds = new Rect(bounds.left + offset[0],
       bounds.top + offset[1],
       bounds.right + offset[0], bounds.bottom + offset[1]);
 | Parameters | |
|---|---|
| view | View: the virtual view parent.
 This value cannot benull. | 
| virtualId | int: id identifying the virtual child inside the parent view. | 
| absBounds | Rect: absolute boundaries of the virtual view in the screen.
 This value cannot benull. | 
notifyViewExited
public void notifyViewExited (View view, int virtualId)
Called when a virtual view that supports autofill is exited.
| Parameters | |
|---|---|
| view | View: the virtual view parent.
 This value cannot benull. | 
| virtualId | int: id identifying the virtual child inside the parent view. | 
notifyViewExited
public void notifyViewExited (View view)
Called when a View that supports autofill is exited.
| Parameters | |
|---|---|
| view | View:Viewthat was exited.
 This value cannot benull. | 
notifyViewVisibilityChanged
public void notifyViewVisibilityChanged (View view, int virtualId, boolean isVisible)
Called when a virtual view's visibility changed.
| Parameters | |
|---|---|
| view | View:Viewthat was exited.
 This value cannot benull. | 
| virtualId | int: id identifying the virtual child inside the parent view. | 
| isVisible | boolean: visible if the view is visible in the view hierarchy. | 
notifyViewVisibilityChanged
public void notifyViewVisibilityChanged (View view, boolean isVisible)
Called when a view's visibility changed.
| Parameters | |
|---|---|
| view | View:Viewthat was exited.
 This value cannot benull. | 
| isVisible | boolean: visible if the view is visible in the view hierarchy. | 
notifyVirtualViewsReady
public void notifyVirtualViewsReady (View view, SparseArray<VirtualViewFillInfo> infos)
      This method was deprecated
      in API level 36.
    This function will not do anything. Showing fill dialog is now fully controlled
 by the framework and the autofill provider.
  
Called when the virtual views are ready to the user for autofill. This method is used to notify autofill system the views are ready to the user. And then Autofill can do initialization if needed before the user starts to input. For example, do a pre-fill request for the fill dialog.
| Parameters | |
|---|---|
| view | View: the host view that holds a virtual view hierarchy.
 This value cannot benull. | 
| infos | SparseArray: extra information for the virtual views. The key is virtual id which represents
             the virtual view in the host view.
 This value cannot benull. | 
| Throws | |
|---|---|
| IllegalArgumentException | if the infoswas empty | 
registerCallback
public void registerCallback (AutofillManager.AutofillCallback callback)
Registers a AutofillCallback to receive autofill events.
| Parameters | |
|---|---|
| callback | AutofillManager.AutofillCallback: callback to receive events.
 This value may benull. | 
requestAutofill
public void requestAutofill (View view, int virtualId, Rect absBounds)
Explicitly requests a new autofill context for virtual views.
Normally, the autofill context is automatically started if necessary when
 notifyViewEntered(android.view.View, int, android.graphics.Rect) is called, but this method should be used in the
 cases where it must be explicitly started. For example, when the virtual view offers an
 AUTOFILL option on its contextual overflow menu, and the user selects it.
 
The virtual view boundaries must be absolute screen coordinates. For example, if the
 parent view uses bounds to draw the virtual view inside its Canvas,
 the absolute bounds could be calculated by:
 
   int offset[] = new int[2];
   getLocationOnScreen(offset);
   Rect absBounds = new Rect(bounds.left + offset[0],
       bounds.top + offset[1],
       bounds.right + offset[0], bounds.bottom + offset[1]);
 | Parameters | |
|---|---|
| view | View: the virtual view parent.
 This value cannot benull. | 
| virtualId | int: id identifying the virtual child inside the parent view. | 
| absBounds | Rect: absolute boundaries of the virtual view in the screen.
 This value cannot benull. | 
requestAutofill
public void requestAutofill (View view)
Explicitly requests a new autofill context.
Normally, the autofill context is automatically started if necessary when
 notifyViewEntered(android.view.View) is called, but this method should be used in the
 cases where it must be explicitly started. For example, when the view offers an AUTOFILL
 option on its contextual overflow menu, and the user selects it.
| Parameters | |
|---|---|
| view | View: view requesting the new autofill context.
 This value cannot benull. | 
setUserData
public void setUserData (UserData userData)
Sets the UserData used for
 field classification
 
Note: This method should only be called by an app providing an autofill service, and it's ignored if the caller currently doesn't have an enabled autofill service for the user.
| Parameters | |
|---|---|
| userData | UserData: This value may benull. | 
showAutofillDialog
public boolean showAutofillDialog (View view, int virtualId)
      This method was deprecated
      in API level 36.
    This function will not do anything. Showing fill dialog is now fully controlled
 by the framework and the autofill provider.
  
If autofill suggestions for a
 
 dialog-style UI are available for virtual view, shows a dialog allowing the user
 to select a suggestion and returns true.
 
The dialog may not be shown if the autofill service does not support it, if the autofill request has not returned a response yet, if the dialog was shown previously, or if the input method is already shown.
 It is recommended apps to call this method the first time a user focuses on
 an autofill-able form, and to avoid showing the input method if the dialog is shown. If
 this method returns false, you should then instead show the input method (assuming
 that is how the view normally handles the focus event). If the user re-focuses on the view,
 you should not call this method again so as to not disrupt usage of the input method.
| Parameters | |
|---|---|
| view | View: the view hosting the virtual view hierarchy which is used to show autofill
            suggestions.
 This value cannot benull. | 
| virtualId | int: id identifying the virtual view inside the host view. | 
| Returns | |
|---|---|
| boolean | trueif the autofill dialog is being shown | 
showAutofillDialog
public boolean showAutofillDialog (View view)
      This method was deprecated
      in API level 36.
    This function will not do anything. Showing fill dialog is now fully controlled
 by the framework and the autofill provider.
  
If autofill suggestions for a
 
 dialog-style UI are available for view, shows a dialog allowing the user to
 select a suggestion and returns true.
 
The dialog may not be shown if the autofill service does not support it, if the autofill request has not returned a response yet, if the dialog was shown previously, or if the input method is already shown.
 It is recommended apps to call this method the first time a user focuses on
 an autofill-able form, and to avoid showing the input method if the dialog is shown. If
 this method returns false, you should then instead show the input method (assuming
 that is how the view normally handles the focus event). If the user re-focuses on the view,
 you should not call this method again so as to not disrupt usage of the input method.
| Parameters | |
|---|---|
| view | View: the view for which to show autofill suggestions. This is typically a view
             receiving a focus event. The autofill suggestions shown will include content for
             related views as well.
 This value cannot benull. | 
| Returns | |
|---|---|
| boolean | trueif the autofill dialog is being shown | 
unregisterCallback
public void unregisterCallback (AutofillManager.AutofillCallback callback)
Unregisters a AutofillCallback to receive autofill events.
| Parameters | |
|---|---|
| callback | AutofillManager.AutofillCallback: callback to stop receiving events.
 This value may benull. | 
