AutofillService
  public
  
  
  abstract
  class
  AutofillService
  
  
  
  
  
  
  
  
  
  
    extends Service
  
  
  
  
  
  
  
    
  An AutofillService is a service used to automatically fill the contents of the screen
 on behalf of a given user - for more information about autofill, read
 Autofill Framework.
 
An AutofillService is only bound to the Android System for autofill purposes if:
 
   - It requires the android.permission.BIND_AUTOFILL_SERVICEpermission in its
       manifest.
- The user explicitly enables it using Android Settings (the
       Settings.ACTION_REQUEST_SET_AUTOFILL_SERVICEintent can be used to launch such
       Settings screen).
Basic usage
 The basic autofill process is defined by the workflow below:
 
   - User focus an editable View.
- View calls AutofillManager.notifyViewEntered(android.view.View).
- A ViewStructurerepresenting all views in the screen is created.
- The Android System binds to the service and calls onConnected().
- The service receives the view structure through the
       onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback).
- The service replies through FillCallback.onSuccess(FillResponse).
- The Android System calls onDisconnected()and unbinds from theAutofillService.
- The Android System displays an autofill UI with the options sent by the service.
   
- The user picks an option.
   
- The proper views are autofilled.
 
This workflow was designed to minimize the time the Android System is bound to the service;
 for each call, it: binds to service, waits for the reply, and unbinds right away. Furthermore,
 those calls are considered stateless: if the service needs to keep state between calls, it must
 do its own state management (keeping in mind that the service's process might be killed by the
 Android System when unbound; for example, if the device is running low in memory).
 
Typically, the
 onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback) will:
 
   - Parse the view structure looking for autofillable views (for example, using
       AssistStructure.ViewNode.getAutofillHints().
- Match the autofillable views with the user's data.
   
- Create a Datasetfor each set of user's data that match those fields.
- Fill the dataset(s) with the proper AutofillIds andAutofillValues.
- Add the dataset(s) to the FillResponsepassed toFillCallback.onSuccess(FillResponse).
For example, for a login screen with username and password views where the user only has one
 account in the service, the response could be:
 
 new FillResponse.Builder()
     .addDataset(new Dataset.Builder()
         .setValue(id1, AutofillValue.forText("homer"), createPresentation("homer"))
         .setValue(id2, AutofillValue.forText("D'OH!"), createPresentation("password for homer"))
         .build())
     .build();
 
 But if the user had 2 accounts instead, the response could be:
 
 new FillResponse.Builder()
     .addDataset(new Dataset.Builder()
         .setValue(id1, AutofillValue.forText("homer"), createPresentation("homer"))
         .setValue(id2, AutofillValue.forText("D'OH!"), createPresentation("password for homer"))
         .build())
     .addDataset(new Dataset.Builder()
         .setValue(id1, AutofillValue.forText("flanders"), createPresentation("flanders"))
         .setValue(id2, AutofillValue.forText("OkelyDokelyDo"), createPresentation("password for flanders"))
         .build())
     .build();
 
 If the service does not find any autofillable view in the view structure, it should pass
 null to FillCallback.onSuccess(FillResponse); if the service encountered an error
 processing the request, it should call FillCallback.onFailure(CharSequence). For
 performance reasons, it's paramount that the service calls either
 FillCallback.onSuccess(FillResponse) or FillCallback.onFailure(CharSequence) for
 each onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback) received - if it
 doesn't, the request will eventually time out and be discarded by the Android System.
 
 
Saving user data
 If the service is also interested on saving the data filled by the user, it must set a
 SaveInfo object in the FillResponse. See SaveInfo for more details and
 examples.
 
 
User authentication
 The service can provide an extra degree of security by requiring the user to authenticate
 before an app can be autofilled. The authentication is typically required in 2 scenarios:
 
 When using authentication, it is recommended to encrypt only the sensitive data and leave
 labels unencrypted, so they can be used on presentation views. For example, if the user has a
 home and a work address, the Home and Work labels should be stored unencrypted
 (since they don't have any sensitive data) while the address data per se could be stored in an
 encrypted storage. Then when the user chooses the Home dataset, the platform starts
 the authentication flow, and the service can decrypt the sensitive data.
 
The authentication mechanism can also be used in scenarios where the service needs multiple
 steps to determine the datasets that can fill a screen. For example, when autofilling a financial
 app where the user has accounts for multiple banks, the workflow could be:
 
   - The first FillResponsecontains datasets with the credentials for the financial
       app, plus a "fake" dataset whose presentation says "Tap here for banking apps credentials".
- When the user selects the fake dataset, the service displays a dialog with available
       banking apps.
   
- When the user select a banking app, the service replies with a new FillResponsecontaining the datasets for that bank.
Another example of multiple-steps dataset selection is when the service stores the user
 credentials in "vaults": the first response would contain fake datasets with the vault names,
 and the subsequent response would contain the app credentials stored in that vault.
 
 
Data partitioning
 The autofillable views in a screen should be grouped in logical groups called "partitions".
 Typical partitions are:
 
   - Credentials (username/email address, password).
   
- Address (street, city, state, zip code, etc).
   
- Payment info (credit card number, expiration date, and verification code).
 
For security reasons, when a screen has more than one partition, it's paramount that the
 contents of a dataset do not spawn multiple partitions, specially when one of the partitions
 contains data that is not specific to the application being autofilled. For example, a dataset
 should not contain fields for username, password, and credit card information. The reason for
 this rule is that a malicious app could draft a view structure where the credit card fields
 are not visible, so when the user selects a dataset from the username UI, the credit card info is
 released to the application without the user knowledge. Similarly, it's recommended to always
 protect a dataset that contains sensitive information by requiring dataset authentication
 (see Dataset.Builder.setAuthentication(android.content.IntentSender)), and to include
 info about the "primary" field of the partition in the custom presentation for "secondary"
 fields—that would prevent a malicious app from getting the "primary" fields without the
 user realizing they're being released (for example, a malicious app could have fields for a
 credit card number, verification code, and expiration date crafted in a way that just the latter
 is visible; by explicitly indicating the expiration date is related to a given credit card
 number, the service would be providing a visual clue for the users to check what would be
 released upon selecting that field).
 
When the service detects that a screen has multiple partitions, it should return a
 FillResponse with just the datasets for the partition that originated the request (i.e.,
 the partition that has the AssistStructure.ViewNode whose
 AssistStructure.ViewNode.isFocused() returns true); then if
 the user selects a field from a different partition, the Android System will make another
 onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback) call for that partition,
 and so on.
 
Notice that when the user autofill a partition with the data provided by the service and the
 user did not change these fields, the autofilled value is sent back to the service in the
 subsequent calls (and can be obtained by calling
 AssistStructure.ViewNode.getAutofillValue()). This is useful in the
 cases where the service must create datasets for a partition based on the choice made in a
 previous partition. For example, the 1st response for a screen that have credentials and address
 partitions could be:
 
 new FillResponse.Builder()
     .addDataset(new Dataset.Builder() // partition 1 (credentials)
         .setValue(id1, AutofillValue.forText("homer"), createPresentation("homer"))
         .setValue(id2, AutofillValue.forText("D'OH!"), createPresentation("password for homer"))
         .build())
     .addDataset(new Dataset.Builder() // partition 1 (credentials)
         .setValue(id1, AutofillValue.forText("flanders"), createPresentation("flanders"))
         .setValue(id2, AutofillValue.forText("OkelyDokelyDo"), createPresentation("password for flanders"))
         .build())
     .setSaveInfo(new SaveInfo.Builder(SaveInfo.SAVE_DATA_TYPE_PASSWORD,
         new AutofillId[] { id1, id2 })
             .build())
     .build();
 
 Then if the user selected flanders, the service would get a new
 onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback) call, with the values of
 the fields id1 and id2 prepopulated, so the service could then fetch the address
 for the Flanders account and return the following FillResponse for the address partition:
 
 new FillResponse.Builder()
     .addDataset(new Dataset.Builder() // partition 2 (address)
         .setValue(id3, AutofillValue.forText("744 Evergreen Terrace"), createPresentation("744 Evergreen Terrace")) // street
         .setValue(id4, AutofillValue.forText("Springfield"), createPresentation("Springfield")) // city
         .build())
     .setSaveInfo(new SaveInfo.Builder(SaveInfo.SAVE_DATA_TYPE_PASSWORD | SaveInfo.SAVE_DATA_TYPE_ADDRESS,
         new AutofillId[] { id1, id2 }) // username and password
              .setOptionalIds(new AutofillId[] { id3, id4 }) // state and zipcode
             .build())
     .build();
 
 When the service returns multiple FillResponse, the last one overrides the previous;
 that's why the SaveInfo in the 2nd request above has the info for both partitions.
 
 
Package verification
 When autofilling app-specific data (like username and password), the service must verify
 the authenticity of the request by obtaining all signing certificates of the app being
 autofilled, and only fulfilling the request when they match the values that were
 obtained when the data was first saved — such verification is necessary to avoid phishing
 attempts by apps that were sideloaded in the device with the same package name of another app.
 Here's an example on how to achieve that by hashing the signing certificates:
 
 private String getCertificatesHash(String packageName) throws Exception {
   PackageManager pm = mContext.getPackageManager();
   PackageInfo info = pm.getPackageInfo(packageName, PackageManager.GET_SIGNATURES);
   ArrayList hashes = new ArrayList<>(info.signatures.length);
   for (Signature sig : info.signatures) {
     byte[] cert = sig.toByteArray();
     MessageDigest md = MessageDigest.getInstance("SHA-256");
     md.update(cert);
     hashes.add(toHexString(md.digest()));
   }
   Collections.sort(hashes);
   StringBuilder hash = new StringBuilder();
   for (int i = 0; i < hashes.size(); i++) {
     hash.append(hashes.get(i));
   }
   return hash.toString();
 }
 
 If the service did not store the signing certificates data the first time the data was saved
 — for example, because the data was created by a previous version of the app that did not
 use the Autofill Framework — the service should warn the user that the authenticity of the
 app cannot be confirmed (see an example on how to show such warning in the
 Web security section below), and if the user agrees,
 then the service could save the data from the signing ceriticates for future use.
 
 
Ignoring views
 If the service find views that cannot be autofilled (for example, a text field representing
 the response to a Captcha challenge), it should mark those views as ignored by
 calling FillResponse.Builder.setIgnoredIds(AutofillId...) so the system does not trigger
 a new onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback) when these views are
 focused.
 
 
Web security
 When handling autofill requests that represent web pages (typically
 view structures whose root's AssistStructure.ViewNode.getClassName()
 is a WebView), the service should take the following steps to verify if
 the structure can be autofilled with the data associated with the app requesting it:
 
   - Use the AssistStructure.ViewNode.getWebDomain()to get the
       source of the document.
- Get the canonical domain using the
       Public Suffix List (see example below).
   
- Use Digital Asset Links
       to obtain the package name and certificate fingerprint of the package corresponding to
       the canonical domain.
   
- Make sure the certificate fingerprint matches the value returned by Package Manager
       (see "Package verification" section above).
 
Here's an example on how to get the canonical domain using
 Guava:
 
 private static String getCanonicalDomain(String domain) {
   InternetDomainName idn = InternetDomainName.from(domain);
   while (idn != null && !idn.isTopPrivateDomain()) {
     idn = idn.parent();
   }
   return idn == null ? null : idn.toString();
 }
 
 
 If the association between the web domain and app package cannot be verified through the steps
 above, but the service thinks that it is appropriate to fill persisted credentials that are
 stored for the web domain, the service should warn the user about the potential data
 leakage first, and ask for the user to confirm. For example, the service could:
 
   - Create a dataset that requires
       authenticationto
       unlock.
- Include the web domain in the custom presentation for the
       dataset value.
- When the user selects that dataset, show a disclaimer dialog explaining that the app is
       requesting credentials for a web domain, but the service could not verify if the app owns
       that domain. If the user agrees, then the service can unlock the dataset.
   
- Similarly, when adding a SaveInfoobject for the request, the service should
       include the above disclaimer in theSaveInfo.Builder.setDescription(CharSequence).
This same procedure could also be used when the autofillable data is contained inside an
 IFRAME, in which case the WebView generates a new autofill context when a node inside
 the IFRAME is focused, with the root node containing the IFRAME's src
 attribute on AssistStructure.ViewNode.getWebDomain(). A typical and
 legitimate use case for this scenario is a financial app that allows the user
 to login on different bank accounts. For example, a financial app my_financial_app could
 use a WebView that loads contents from banklogin.my_financial_app.com, which contains an
 IFRAME node whose src attribute is login.some_bank.com. When fulfilling
 that request, the service could add an
 authenticated dataset
 whose presentation displays "Username for some_bank.com" and
 "Password for some_bank.com". Then when the user taps one of these options, the service
 shows the disclaimer dialog explaining that selecting that option would release the
 login.some_bank.com credentials to the my_financial_app; if the user agrees,
 then the service returns an unlocked dataset with the some_bank.com credentials.
 
Note: The autofill service could also add well-known browser apps into an allowlist and
 skip the verifications above, as long as the service can verify the authenticity of the browser
 app by checking its signing certificate.
 
 
Saving when data is split in multiple screens
 Apps often split the user data in multiple screens in the same activity, specially in
 activities used to create a new user account. For example, the first screen asks for a username,
 and if the username is available, it moves to a second screen, which asks for a password.
 
It's tricky to handle save for autofill in these situations, because the autofill service must
 wait until the user enters both fields before the autofill save UI can be shown. But it can be
 done by following the steps below:
 
 - In the first
 fill request, the service
 adds aclient state bundlein
 the response, containing the autofill ids of the partial fields present in the screen.
- In the second
 fill request, the service
 retrieves theclient state bundle, gets the autofill ids
 set in the previous request from the client state, and adds these ids and theSaveInfo.FLAG_SAVE_ON_ALL_VIEWS_INVISIBLEto theSaveInfoused in the second
 response.
- In the save request, the service uses the
 properfill contextsto get the value of each field (there is one fill
 context per fill request).
For example, in an app that uses 2 steps for the username and password fields, the workflow
 would be:
 
  // On first fill request
  AutofillId usernameId = // parse from AssistStructure;
  Bundle clientState = new Bundle();
  clientState.putParcelable("usernameId", usernameId);
  fillCallback.onSuccess(
    new FillResponse.Builder()
        .setClientState(clientState)
        .setSaveInfo(new SaveInfo
             .Builder(SaveInfo.SAVE_DATA_TYPE_USERNAME, new AutofillId[] {usernameId})
             .build())
        .build());
  // On second fill request
  Bundle clientState = fillRequest.getClientState();
  AutofillId usernameId = clientState.getParcelable("usernameId");
  AutofillId passwordId = // parse from AssistStructure
  clientState.putParcelable("passwordId", passwordId);
  fillCallback.onSuccess(
    new FillResponse.Builder()
        .setClientState(clientState)
        .setSaveInfo(new SaveInfo
             .Builder(SaveInfo.SAVE_DATA_TYPE_USERNAME | SaveInfo.SAVE_DATA_TYPE_PASSWORD,
                      new AutofillId[] {usernameId, passwordId})
             .setFlags(SaveInfo.FLAG_SAVE_ON_ALL_VIEWS_INVISIBLE)
             .build())
        .build());
  // On save request
  Bundle clientState = saveRequest.getClientState();
  AutofillId usernameId = clientState.getParcelable("usernameId");
  AutofillId passwordId = clientState.getParcelable("passwordId");
  List fillContexts = saveRequest.getFillContexts();
  FillContext usernameContext = fillContexts.get(0);
  ViewNode usernameNode = findNodeByAutofillId(usernameContext.getStructure(), usernameId);
  AutofillValue username = usernameNode.getAutofillValue().getTextValue().toString();
  FillContext passwordContext = fillContexts.get(1);
  ViewNode passwordNode = findNodeByAutofillId(passwordContext.getStructure(), passwordId);
  AutofillValue password = passwordNode.getAutofillValue().getTextValue().toString();
  save(username, password);
  
 
 Privacy
 The onFillRequest(android.service.autofill.FillRequest, android.os.CancellationSignal, android.service.autofill.FillCallback) method is called
 without the user content. The Android system strips some properties of the
 view nodes passed to this call, but not all
 of them. For example, the data provided in the ViewStructure.HtmlInfo
 objects set by WebView is never stripped out.
 
Because this data could contain PII (Personally Identifiable Information, such as username or
 email address), the service should only use it locally (i.e., in the app's process) for
 heuristics purposes, but it should not be sent to external servers.
 
 
Metrics and field classification
 The service can call getFillEventHistory() to get metrics representing the user
 actions, and then use these metrics to improve its heuristics.
 
Prior to Android Build.VERSION_CODES.P, the metrics covered just the
 scenarios where the service knew how to autofill an activity, but Android
 Build.VERSION_CODES.P introduced a new mechanism called field classification,
 which allows the service to dynamically classify the meaning of fields based on the existing user
 data known by the service.
 
Typically, field classification can be used to detect fields that can be autofilled with
 user data that is not associated with a specific app—such as email and physical
 address. Once the service identifies that a such field was manually filled by the user, the
 service could use this signal to improve its heuristics on subsequent requests (for example, by
 infering which resource ids are associated with known fields).
 
The field classification workflow involves 4 steps:
 
   - Set the user data through AutofillManager.setUserData(UserData). This data is
   cached until the system restarts (or the service is disabled), so it doesn't need to be set for
   all requests.
- Identify which fields should be analysed by calling
   FillResponse.Builder.setFieldClassificationIds(AutofillId...).
- Verify the results through FillEventHistory.Event.getFieldsClassification().
- Use the results to dynamically create DatasetorSaveInfoobjects in
   subsequent requests.
The field classification is an expensive operation and should be used carefully, otherwise it
 can reach its rate limit and get blocked by the Android System. Ideally, it should be used just
 in cases where the service could not determine how an activity can be autofilled, but it has a
 strong suspicious that it could. For example, if an activity has four or more fields and one of
 them is a list, chances are that these are address fields (like address, city, state, and
 zip code).
 
 
Compatibility mode
 Apps that use standard Android widgets support autofill out-of-the-box and need to do
 very little to improve their user experience (annotating autofillable views and providing
 autofill hints). However, some apps (typically browsers) do their own rendering and the rendered
 content may contain semantic structure that needs to be surfaced to the autofill framework. The
 platform exposes APIs to achieve this, however it could take some time until these apps implement
 autofill support.
 
To enable autofill for such apps the platform provides a compatibility mode in which the
 platform would fall back to the accessibility APIs to generate the state reported to autofill
 services and fill data. This mode needs to be explicitly requested for a given package up
 to a specified max version code allowing clean migration path when the target app begins to
 support autofill natively. Note that enabling compatibility may degrade performance for the
 target package and should be used with caution. The platform supports creating an allowlist for
 including which packages can be targeted in compatibility mode to ensure this mode is used only
 when needed and as long as needed.
 
You can request compatibility mode for packages of interest in the meta-data resource
 associated with your service. Below is a sample service declaration:
 
 <service android:name=".MyAutofillService"
              android:permission="android.permission.BIND_AUTOFILL_SERVICE">
     <intent-filter>
         <action android:name="android.service.autofill.AutofillService" />
     </intent-filter>
     <meta-data android:name="android.autofill" android:resource="@xml/autofillservice" />
 </service>
 In the XML file you can specify one or more packages for which to enable compatibility
 mode. Below is a sample meta-data declaration:
 
 <autofill-service xmlns:android="http://schemas.android.com/apk/res/android">
     <compatibility-package android:name="foo.bar.baz" android:maxLongVersionCode="1000000000"/>
 </autofill-service>
 Notice that compatibility mode has limitations such as:
 
 - No manual autofill requests. Hence, the FillRequestflagsnever have theFillRequest.FLAG_MANUAL_REQUESTflag.
- The value of password fields are most likely masked—for example, ****instead
 of1234. Hence, you must be careful when using these values to avoid updating the user
 data with invalid input. For example, when you parse theFillRequestand detect a
 password field, you could check if itsinput typehas password flags and if so, don't add it to theSaveInfoobject.
- The autofill context is not always committedwhen an HTML
 form is submitted. Hence, you must use other mechanisms to trigger save, such as setting theSaveInfo.FLAG_SAVE_ON_ALL_VIEWS_INVISIBLEflag onSaveInfo.Builder.setFlags(int)or usingSaveInfo.Builder.setTriggerId(AutofillId).
- Browsers often provide their own autofill management system. When both the browser and
 the platform render an autofill dialog at the same time, the result can be confusing to the user.
 Such browsers typically offer an option for users to disable autofill, so your service should
 also allow users to disable compatiblity mode for specific apps. That way, it is up to the user
 to decide which autofill mechanism—the browser's or the platform's—should be used.
 
Summary
| Inherited constants | 
|---|
  
  | 
      From class
        android.app.Service
        
    
    
        | int | START_CONTINUATION_MASKBits returned by onStartCommand(Intent, int, int)describing how to continue
 the service if it is killed. |  
        | int | START_FLAG_REDELIVERYThis flag is set in onStartCommand(Intent, int, int)if the Intent is a
 re-delivery of a previously delivered intent, because the service
 had previously returnedSTART_REDELIVER_INTENTbut had been
 killed before callingstopSelf(int)for that Intent. |  
        | int | START_FLAG_RETRYThis flag is set in onStartCommand(Intent, int, int)if the Intent is a
 retry because the original attempt never got to or returned fromonStartCommand(android.content.Intent, int, int). |  
        | int | START_NOT_STICKYConstant to return from onStartCommand(Intent, int, int): if this service's
 process is killed while it is started (after returning fromonStartCommand(Intent, int, int)), and there are no new start intents to
 deliver to it, then take the service out of the started state and
 don't recreate until a future explicit call toContext.startService(Intent). |  
        | int | START_REDELIVER_INTENTConstant to return from onStartCommand(Intent, int, int): if this service's
 process is killed while it is started (after returning fromonStartCommand(Intent, int, int)), then it will be scheduled for a restart
 and the last delivered Intent re-delivered to it again viaonStartCommand(Intent, int, int). |  
        | int | START_STICKYConstant to return from onStartCommand(Intent, int, int): if this service's
 process is killed while it is started (after returning fromonStartCommand(Intent, int, int)), then leave it in the started state but
 don't retain this delivered intent. |  
        | int | START_STICKY_COMPATIBILITYConstant to return from onStartCommand(Intent, int, int): compatibility
 version ofSTART_STICKYthat does not guarantee thatonStartCommand(Intent, int, int)will be called again after being killed. |  
        | int | STOP_FOREGROUND_DETACHSelector for stopForeground(int): if set, the notification previously supplied
 tostartForeground(int, Notification)will be detached from the service's lifecycle. |  
        | int | STOP_FOREGROUND_LEGACY
      This constant was deprecated
      in API level 33.
    Use STOP_FOREGROUND_DETACHinstead.  The legacy
 behavior was inconsistent, leading to bugs around unpredictable results. |  
        | int | STOP_FOREGROUND_REMOVESelector for stopForeground(int): if supplied, the notification previously
 supplied tostartForeground(int, Notification)will be cancelled and removed from display. |  | 
  
  | 
      From class
        android.content.Context
        
    
    
        | String | ACCESSIBILITY_SERVICEUse with getSystemService(java.lang.String)to retrieve aAccessibilityManagerfor giving the user
 feedback for UI events through the registered event listeners. |  
        | String | ACCOUNT_SERVICEUse with getSystemService(java.lang.String)to retrieve aAccountManagerfor receiving intents at a
 time of your choosing. |  
        | String | ACTIVITY_SERVICEUse with getSystemService(java.lang.String)to retrieve aActivityManagerfor interacting with the global
 system state. |  
        | String | ADVANCED_PROTECTION_SERVICEUse with getSystemService(java.lang.String)to retrieve anAdvancedProtectionManager |  
        | String | ALARM_SERVICEUse with getSystemService(java.lang.String)to retrieve aAlarmManagerfor receiving intents at a
 time of your choosing. |  
        | String | APPWIDGET_SERVICEUse with getSystemService(java.lang.String)to retrieve aAppWidgetManagerfor accessing AppWidgets. |  
        | String | APP_FUNCTION_SERVICEUse with getSystemService(java.lang.String)to retrieve anAppFunctionManagerfor
 executing app functions. |  
        | String | APP_OPS_SERVICEUse with getSystemService(java.lang.String)to retrieve aAppOpsManagerfor tracking application operations
 on the device. |  
        | String | APP_SEARCH_SERVICEUse with getSystemService(java.lang.String)to retrieve anAppSearchManagerfor
 indexing and querying app data managed by the system. |  
        | String | AUDIO_SERVICEUse with getSystemService(java.lang.String)to retrieve aAudioManagerfor handling management of volume,
 ringer modes and audio routing. |  
        | String | BATTERY_SERVICEUse with getSystemService(java.lang.String)to retrieve aBatteryManagerfor managing battery state. |  
        | int | BIND_ABOVE_CLIENTFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): indicates that the client application
 binding to this service considers the service to be more important than
 the app itself. |  
        | int | BIND_ADJUST_WITH_ACTIVITYFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an activity, allow the
 target service's process importance to be raised based on whether the
 activity is visible to the user, regardless whether another flag is
 used to reduce the amount that the client process's overall importance
 is used to impact it. |  
        | int | BIND_ALLOW_ACTIVITY_STARTSFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an app that is visible, the bound service is
 allowed to start an activity from background. |  
        | int | BIND_ALLOW_OOM_MANAGEMENTFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): allow the process hosting the bound
 service to go through its normal memory management. |  
        | int | BIND_AUTO_CREATEFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): automatically create the service as long
 as the binding exists. |  
        | int | BIND_DEBUG_UNBINDFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): include debugging help for mismatched
 calls to unbind. |  
        | int | BIND_EXTERNAL_SERVICEFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): The service being bound is anisolated,externalservice. |  
        | long | BIND_EXTERNAL_SERVICE_LONGWorks in the same way as BIND_EXTERNAL_SERVICE, but it's defined as alongvalue that is compatible toBindServiceFlags. |  
        | int | BIND_IMPORTANTFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): this service is very important to
 the client, so should be brought to the foreground process level
 when the client is. |  
        | int | BIND_INCLUDE_CAPABILITIESFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an app that has specific capabilities
 due to its foreground state such as an activity or foreground service, then this flag will
 allow the bound app to get the same capabilities, as long as it has the required permissions
 as well. |  
        | int | BIND_NOT_FOREGROUNDFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): don't allow this binding to raise
 the target service's process to the foreground scheduling priority. |  
        | int | BIND_NOT_PERCEPTIBLEFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): If binding from an app that is visible or user-perceptible,
 lower the target service's importance to below the perceptible level. |  
        | int | BIND_PACKAGE_ISOLATED_PROCESSFlag for bindIsolatedService(Intent, BindServiceFlags, String, Executor, ServiceConnection): Bind the service into a shared isolated process,
 but only with other isolated services from the same package that declare the same process
 name. |  
        | int | BIND_SHARED_ISOLATED_PROCESSFlag for bindIsolatedService(Intent, BindServiceFlags, String, Executor, ServiceConnection): Bind the service into a shared isolated process. |  
        | int | BIND_WAIVE_PRIORITYFlag for bindService(Intent, BindServiceFlags, Executor, ServiceConnection): don't impact the scheduling or
 memory management priority of the target service's hosting process. |  
        | String | BIOMETRIC_SERVICEUse with getSystemService(java.lang.String)to retrieve aBiometricManagerfor handling
 biometric and PIN/pattern/password authentication. |  
        | String | BLOB_STORE_SERVICEUse with getSystemService(java.lang.String)to retrieve aBlobStoreManagerfor contributing and accessing data blobs
 from the blob store maintained by the system. |  
        | String | BLUETOOTH_SERVICEUse with getSystemService(java.lang.String)to retrieve aBluetoothManagerfor using Bluetooth. |  
        | String | BUGREPORT_SERVICEService to capture a bugreport.
          
    
 |  
        | String | CAMERA_SERVICEUse with getSystemService(java.lang.String)to retrieve aCameraManagerfor interacting with
 camera devices. |  
        | String | CAPTIONING_SERVICEUse with getSystemService(java.lang.String)to retrieve aCaptioningManagerfor obtaining
 captioning properties and listening for changes in captioning
 preferences. |  
        | String | CARRIER_CONFIG_SERVICEUse with getSystemService(java.lang.String)to retrieve aCarrierConfigManagerfor reading carrier configuration values. |  
        | String | CHOOSER_SERVICEUse with getSystemService(java.lang.String)to retrieve aChooserManager. |  
        | String | CLIPBOARD_SERVICEUse with getSystemService(java.lang.String)to retrieve aClipboardManagerfor accessing and modifying
 the contents of the global clipboard. |  
        | String | COMPANION_DEVICE_SERVICEUse with getSystemService(java.lang.String)to retrieve aCompanionDeviceManagerfor managing companion devices |  
        | String | CONNECTIVITY_DIAGNOSTICS_SERVICEUse with getSystemService(java.lang.String)to retrieve aConnectivityDiagnosticsManagerfor performing network connectivity diagnostics
 as well as receiving network connectivity information from the system. |  
        | String | CONNECTIVITY_SERVICEUse with getSystemService(java.lang.String)to retrieve aConnectivityManagerfor handling management of
 network connections. |  
        | String | CONSUMER_IR_SERVICEUse with getSystemService(java.lang.String)to retrieve aConsumerIrManagerfor transmitting infrared
 signals from the device. |  
        | String | CONTACT_KEYS_SERVICEUse with getSystemService(java.lang.String)to retrieve aE2eeContactKeysManagerto managing contact keys. |  
        | int | CONTEXT_IGNORE_SECURITYFlag for use with createPackageContext(String, int): ignore any security
 restrictions on the Context being requested, allowing it to always
 be loaded. |  
        | int | CONTEXT_INCLUDE_CODEFlag for use with createPackageContext(String, int): include the application
 code with the context. |  
        | int | CONTEXT_RESTRICTEDFlag for use with createPackageContext(String, int): a restricted context may
 disable specific features. |  
        | String | CREDENTIAL_SERVICEUse with getSystemService(java.lang.String)to retrieve aCredentialManagerto authenticate a user to your app. |  
        | String | CROSS_PROFILE_APPS_SERVICEUse with getSystemService(java.lang.String)to retrieve aCrossProfileAppsfor cross profile operations. |  
        | int | DEVICE_ID_DEFAULTThe default device ID, which is the ID of the primary (non-virtual) device.
          
    
 |  
        | int | DEVICE_ID_INVALIDInvalid device ID.
          
    
 |  
        | String | DEVICE_LOCK_SERVICEUse with getSystemService(java.lang.String)to retrieve aDeviceLockManager. |  
        | String | DEVICE_POLICY_SERVICEUse with getSystemService(java.lang.String)to retrieve aDevicePolicyManagerfor working with global
 device policy management. |  
        | String | DISPLAY_HASH_SERVICEUse with getSystemService(java.lang.String)to accessDisplayHashManagerto handle display hashes. |  
        | String | DISPLAY_SERVICEUse with getSystemService(java.lang.String)to retrieve aDisplayManagerfor interacting with display devices. |  
        | String | DOMAIN_VERIFICATION_SERVICEUse with getSystemService(java.lang.String)to accessDomainVerificationManagerto retrieve approval and
 user state for declared web domains. |  
        | String | DOWNLOAD_SERVICEUse with getSystemService(java.lang.String)to retrieve aDownloadManagerfor requesting HTTP downloads. |  
        | String | DROPBOX_SERVICEUse with getSystemService(java.lang.String)to retrieve aDropBoxManagerinstance for recording
 diagnostic logs. |  
        | String | EUICC_SERVICEUse with getSystemService(java.lang.String)to retrieve aEuiccManagerto manage the device eUICC (embedded SIM). |  
        | String | FILE_INTEGRITY_SERVICEUse with getSystemService(java.lang.String)to retrieve anFileIntegrityManager. |  
        | String | FINGERPRINT_SERVICEUse with getSystemService(java.lang.String)to retrieve aFingerprintManagerfor handling management
 of fingerprints. |  
        | String | GAME_SERVICEUse with getSystemService(java.lang.String)to retrieve aGameManager. |  
        | String | GRAMMATICAL_INFLECTION_SERVICEUse with getSystemService(java.lang.String)to retrieve aGrammaticalInflectionManager. |  
        | String | HARDWARE_PROPERTIES_SERVICEUse with getSystemService(java.lang.String)to retrieve aHardwarePropertiesManagerfor accessing the hardware properties service. |  
        | String | HEALTHCONNECT_SERVICEUse with getSystemService(java.lang.String)to retrieve aHealthConnectManager. |  
        | String | INPUT_METHOD_SERVICEUse with getSystemService(java.lang.String)to retrieve aInputMethodManagerfor accessing input
 methods. |  
        | String | INPUT_SERVICEUse with getSystemService(java.lang.String)to retrieve aInputManagerfor interacting with input devices. |  
        | String | IPSEC_SERVICEUse with getSystemService(java.lang.String)to retrieve aIpSecManagerfor encrypting Sockets or Networks with
 IPSec. |  
        | String | JOB_SCHEDULER_SERVICEUse with getSystemService(java.lang.String)to retrieve aJobSchedulerinstance for managing occasional
 background tasks. |  
        | String | KEYGUARD_SERVICEUse with getSystemService(java.lang.String)to retrieve aKeyguardManagerfor controlling keyguard. |  
        | String | KEYSTORE_SERVICEUse with getSystemService(java.lang.String)to retrieve aKeyStoreManagerfor accessing
 Android Keystore
 functions. |  
        | String | LAUNCHER_APPS_SERVICEUse with getSystemService(java.lang.String)to retrieve aLauncherAppsfor querying and monitoring launchable apps across
 profiles of a user. |  
        | String | LAYOUT_INFLATER_SERVICEUse with getSystemService(java.lang.String)to retrieve aLayoutInflaterfor inflating layout resources in this
 context. |  
        | String | LOCALE_SERVICEUse with getSystemService(java.lang.String)to retrieve aLocaleManager. |  
        | String | LOCATION_SERVICEUse with getSystemService(java.lang.String)to retrieve aLocationManagerfor controlling location
 updates. |  
        | String | MEDIA_COMMUNICATION_SERVICEUse with getSystemService(java.lang.String)to retrieve aMediaCommunicationManagerfor managingMediaSession2. |  
        | String | MEDIA_METRICS_SERVICEUse with getSystemService(java.lang.String)to retrieve aMediaMetricsManagerfor interacting with media metrics
 on the device. |  
        | String | MEDIA_PROJECTION_SERVICEUse with getSystemService(java.lang.String)to retrieve aMediaProjectionManagerinstance for managing
 media projection sessions. |  
        | String | MEDIA_QUALITY_SERVICEUse with getSystemService(java.lang.String)to retrieve aMediaQualityManagerfor standardize picture
 and audio API parameters. |  
        | String | MEDIA_ROUTER_SERVICEUse with getSystemService(Class)to retrieve aMediaRouterfor controlling and managing
 routing of media. |  
        | String | MEDIA_SESSION_SERVICEUse with getSystemService(java.lang.String)to retrieve aMediaSessionManagerfor managing media Sessions. |  
        | String | MIDI_SERVICEUse with getSystemService(java.lang.String)to retrieve aMidiManagerfor accessing the MIDI service. |  
        | int | MODE_APPENDFile creation mode: for use with openFileOutput(String, int), if the file
 already exists then write data to the end of the existing file
 instead of erasing it. |  
        | int | MODE_ENABLE_WRITE_AHEAD_LOGGINGDatabase open flag: when set, the database is opened with write-ahead
 logging enabled by default.
          
    
 |  
        | int | MODE_MULTI_PROCESS
      This constant was deprecated
      in API level 23.
    MODE_MULTI_PROCESS does not work reliably in
 some versions of Android, and furthermore does not provide any
 mechanism for reconciling concurrent modifications across
 processes.  Applications should not attempt to use it.  Instead,
 they should use an explicit cross-process data management
 approach such as ContentProvider. |  
        | int | MODE_NO_LOCALIZED_COLLATORSDatabase open flag: when set, the database is opened without support for
 localized collators.
          
    
 |  
        | int | MODE_PRIVATEFile creation mode: the default mode, where the created file can only
 be accessed by the calling application (or all applications sharing the
 same user ID).
          
    
 |  
        | int | MODE_WORLD_READABLE
      This constant was deprecated
      in API level 17.
    Creating world-readable files is very dangerous, and likely
             to cause security holes in applications. It is strongly
             discouraged; instead, applications should use more formal
             mechanism for interactions such as ContentProvider,BroadcastReceiver, andService.
             There are no guarantees that this access mode will remain on
             a file, such as when it goes through a backup and restore. |  
        | int | MODE_WORLD_WRITEABLE
      This constant was deprecated
      in API level 17.
    Creating world-writable files is very dangerous, and likely
             to cause security holes in applications. It is strongly
             discouraged; instead, applications should use more formal
             mechanism for interactions such as ContentProvider,BroadcastReceiver, andService.
             There are no guarantees that this access mode will remain on
             a file, such as when it goes through a backup and restore. |  
        | String | NETWORK_STATS_SERVICEUse with getSystemService(java.lang.String)to retrieve aNetworkStatsManagerfor querying network usage stats. |  
        | String | NFC_SERVICEUse with getSystemService(java.lang.String)to retrieve aNfcManagerfor using NFC. |  
        | String | NOTIFICATION_SERVICEUse with getSystemService(java.lang.String)to retrieve aNotificationManagerfor informing the user of
 background events. |  
        | String | NSD_SERVICEUse with getSystemService(java.lang.String)to retrieve aNsdManagerfor handling management of network service
 discovery |  
        | String | OVERLAY_SERVICEUse with getSystemService(java.lang.String)to retrieve aOverlayManagerfor managing overlay packages. |  
        | String | PEOPLE_SERVICEUse with getSystemService(java.lang.String)to access aPeopleManagerto interact
 with your published conversations. |  
        | String | PERFORMANCE_HINT_SERVICEUse with getSystemService(java.lang.String)to retrieve aPerformanceHintManagerfor accessing the performance hinting service. |  
        | String | PERSISTENT_DATA_BLOCK_SERVICEUse with getSystemService(java.lang.String)to retrieve aPersistentDataBlockManagerinstance
 for interacting with a storage device that lives across factory resets. |  
        | String | POWER_SERVICEUse with getSystemService(java.lang.String)to retrieve aPowerManagerfor controlling power management,
 including "wake locks," which let you keep the device on while
 you're running long tasks. |  
        | String | PRINT_SERVICEPrintManagerfor printing and managing
 printers and print tasks.
 |  
        | String | PROFILING_SERVICEUse with getSystemService(java.lang.String)to retrieve anProfilingManager. |  
        | int | RECEIVER_EXPORTEDFlag for registerReceiver(BroadcastReceiver, IntentFilter): The receiver can receive broadcasts from other Apps. |  
        | int | RECEIVER_NOT_EXPORTEDFlag for registerReceiver(BroadcastReceiver, IntentFilter): The receiver cannot receive broadcasts from other Apps. |  
        | int | RECEIVER_VISIBLE_TO_INSTANT_APPSFlag for registerReceiver(BroadcastReceiver, IntentFilter): The receiver can receive broadcasts from Instant Apps. |  
        | String | RESTRICTIONS_SERVICEUse with getSystemService(java.lang.String)to retrieve aRestrictionsManagerfor retrieving application restrictions
 and requesting permissions for restricted operations. |  
        | String | ROLE_SERVICEUse with getSystemService(java.lang.String)to retrieve aRoleManagerfor managing roles. |  
        | String | SATELLITE_SERVICEUse with getSystemService(java.lang.String)to retrieve aSatelliteManagerfor accessing satellite functionality. |  
        | String | SEARCH_SERVICEUse with getSystemService(java.lang.String)to retrieve aSearchManagerfor handling searches. |  
        | String | SECURITY_STATE_SERVICEUse with getSystemService(java.lang.String)to retrieve aSecurityStateManagerfor accessing the security state manager service. |  
        | String | SENSOR_SERVICEUse with getSystemService(java.lang.String)to retrieve aSensorManagerfor accessing sensors. |  
        | String | SHORTCUT_SERVICEUse with getSystemService(java.lang.String)to retrieve aShortcutManagerfor accessing the launcher shortcut service. |  
        | String | STATUS_BAR_SERVICEUse with getSystemService(java.lang.String)to retrieve aStatusBarManagerfor interacting with the status bar and quick settings. |  
        | String | STORAGE_SERVICEUse with getSystemService(java.lang.String)to retrieve aStorageManagerfor accessing system storage
 functions. |  
        | String | STORAGE_STATS_SERVICEUse with getSystemService(java.lang.String)to retrieve aStorageStatsManagerfor accessing system storage
 statistics. |  
        | String | SYSTEM_HEALTH_SERVICEUse with getSystemService(java.lang.String)to retrieve aSystemHealthManagerfor accessing system health (battery, power,
 memory, etc) metrics. |  
        | String | TELECOM_SERVICEUse with getSystemService(java.lang.String)to retrieve aTelecomManagerto manage telecom-related features
 of the device. |  
        | String | TELEPHONY_IMS_SERVICEUse with getSystemService(java.lang.String)to retrieve anImsManager. |  
        | String | TELEPHONY_PHONE_NUMBER_SERVICEUse with getSystemService(java.lang.String)to retrieve aPhoneNumberManagerfor parsing phone numbers. |  
        | String | TELEPHONY_SERVICEUse with getSystemService(java.lang.String)to retrieve aTelephonyManagerfor handling management the
 telephony features of the device. |  
        | String | TELEPHONY_SUBSCRIPTION_SERVICEUse with getSystemService(java.lang.String)to retrieve aSubscriptionManagerfor handling management the
 telephony subscriptions of the device. |  
        | String | TETHERING_SERVICEUse with getSystemService(java.lang.String)to retrieve aTetheringManagerfor managing tethering functions. |  
        | String | TEXT_CLASSIFICATION_SERVICEUse with getSystemService(java.lang.String)to retrieve aTextClassificationManagerfor text classification services. |  
        | String | TEXT_SERVICES_MANAGER_SERVICEUse with getSystemService(java.lang.String)to retrieve aTextServicesManagerfor accessing
 text services. |  
        | String | TV_AD_SERVICEUse with getSystemService(java.lang.String)to retrieve aTvAdManagerfor interacting with TV client-side advertisement
 services on the device. |  
        | String | TV_INPUT_SERVICEUse with getSystemService(java.lang.String)to retrieve aTvInputManagerfor interacting with TV inputs
 on the device. |  
        | String | TV_INTERACTIVE_APP_SERVICEUse with getSystemService(java.lang.String)to retrieve aTvInteractiveAppManagerfor interacting with TV
 interactive applications on the device. |  
        | String | UI_MODE_SERVICEUse with getSystemService(java.lang.String)to retrieve aUiModeManagerfor controlling UI modes. |  
        | String | USAGE_STATS_SERVICEUse with getSystemService(java.lang.String)to retrieve aUsageStatsManagerfor querying device usage stats. |  
        | String | USB_SERVICEUse with getSystemService(java.lang.String)to retrieve aUsbManagerfor access to USB devices (as a USB host)
 and for controlling this device's behavior as a USB device. |  
        | String | USER_SERVICEUse with getSystemService(java.lang.String)to retrieve aUserManagerfor managing users on devices that support multiple users. |  
        | String | VIBRATOR_MANAGER_SERVICEUse with getSystemService(java.lang.String)to retrieve aVibratorManagerfor accessing the device vibrators, interacting with individual ones and playing synchronized
 effects on multiple vibrators. |  
        | String | VIBRATOR_SERVICE
      This constant was deprecated
      in API level 31.
    Use VibratorManagerto retrieve the default system vibrator. |  
        | String | VIRTUAL_DEVICE_SERVICEUse with getSystemService(java.lang.String)to retrieve aVirtualDeviceManagerfor managing virtual devices. |  
        | String | VPN_MANAGEMENT_SERVICEUse with getSystemService(java.lang.String)to retrieve aVpnManagerto
 manage profiles for the platform built-in VPN. |  
        | String | WALLPAPER_SERVICEUse with getSystemService(java.lang.String)to retrieve a
 com.android.server.WallpaperService for accessing wallpapers. |  
        | String | WIFI_AWARE_SERVICEUse with getSystemService(java.lang.String)to retrieve aWifiAwareManagerfor handling management of
 Wi-Fi Aware. |  
        | String | WIFI_P2P_SERVICEUse with getSystemService(java.lang.String)to retrieve aWifiP2pManagerfor handling management of
 Wi-Fi peer-to-peer connections. |  
        | String | WIFI_RTT_RANGING_SERVICEUse with getSystemService(java.lang.String)to retrieve aWifiRttManagerfor ranging devices with wifi. |  
        | String | WIFI_SERVICEUse with getSystemService(java.lang.String)to retrieve aWifiManagerfor handling management of
 Wi-Fi access. |  
        | String | WINDOW_SERVICEUse with getSystemService(java.lang.String)to retrieve aWindowManagerfor accessing the system's window
 manager. |  | 
  
  |  | 
| Inherited methods | 
|---|
| 
    From class
      
        
          android.app.Service
        
      
      
  
  
  
    | 
        
        
        
        
        
        void | 
      attachBaseContext(Context newBase)
      Set the base context for this ContextWrapper.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      dump(FileDescriptor fd, PrintWriter writer, String[] args)
      Print the Service's state into the given stream.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        Application | 
      getApplication()
      Return the application that owns this service.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        int | 
      getForegroundServiceType()
      If the service has become a foreground service by calling
 startForeground(int, android.app.Notification)orstartForeground(int, android.app.Notification, int),getForegroundServiceType()returns the current foreground service type. |  
  
  
    | 
        abstract
        
        
        
        
        IBinder | 
      onBind(Intent intent)
      Return the communication channel to the service.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onConfigurationChanged(Configuration newConfig)
      Called by the system when the device configuration changes while your
 component is running.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onCreate()
      Called by the system when the service is first created.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onDestroy()
      Called by the system to notify a Service that it is no longer used and is being removed.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onLowMemory()
      This is called when the overall system is running low on memory, and
 actively running processes should trim their memory usage.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onRebind(Intent intent)
      Called when new clients have connected to the service, after it had
 previously been notified that all had disconnected in its
 onUnbind(Intent). |  
  
  
    | 
        
        
        
        
        
        void | 
      onStart(Intent intent, int startId)
      
      This method was deprecated
      in API level 15.
    Implement onStartCommand(android.content.Intent, int, int)instead. |  
  
  
    | 
        
        
        
        
        
        int | 
      onStartCommand(Intent intent, int flags, int startId)
      Called by the system every time a client explicitly starts the service by calling
 Context.startService(Intent), providing the arguments it supplied and a
 unique integer token representing the start request. |  
  
  
    | 
        
        
        
        
        
        void | 
      onTaskRemoved(Intent rootIntent)
      This is called if the service is currently running and the user has
 removed a task that comes from the service's application.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onTimeout(int startId, int fgsType)
      Callback called when a particular foreground service type has timed out.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      onTimeout(int startId)
      Callback called on timeout for ServiceInfo.FOREGROUND_SERVICE_TYPE_SHORT_SERVICE. |  
  
  
    | 
        
        
        
        
        
        void | 
      onTrimMemory(int level)
      Called when the operating system has determined that it is a good
 time for a process to trim unneeded memory from its process.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      onUnbind(Intent intent)
      Called when all clients have disconnected from a particular interface
 published by the service.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      startForeground(int id, Notification notification)
      If your service is started (running through Context.startService(Intent)), then
 also make this service run in the foreground, supplying the ongoing
 notification to be shown to the user while in this state. |  
  
  
    | 
        
        
        
        final
        
        void | 
      startForeground(int id, Notification notification, int foregroundServiceType)
      An overloaded version of startForeground(int, android.app.Notification)with additional
 foregroundServiceType parameter. |  
  
  
    | 
        
        
        
        final
        
        void | 
      stopForeground(int notificationBehavior)
      Remove this service from foreground state, allowing it to be killed if
 more memory is needed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      stopForeground(boolean removeNotification)
      
      This method was deprecated
      in API level 33.
    call stopForeground(int)and pass eitherSTOP_FOREGROUND_REMOVEorSTOP_FOREGROUND_DETACHexplicitly instead. |  
  
  
    | 
        
        
        
        final
        
        void | 
      stopSelf()
      Stop the service, if it was previously started.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      stopSelf(int startId)
      Old version of stopSelfResult(int)that doesn't return a result. |  
  
  
    | 
        
        
        
        final
        
        boolean | 
      stopSelfResult(int startId)
      Stop the service if the most recent time it was started was
 startId.
        
    
 |  | 
| 
    From class
      
        
          android.content.ContextWrapper
        
      
      
  
  
  
    | 
        
        
        
        
        
        void | 
      attachBaseContext(Context base)
      Set the base context for this ContextWrapper.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindIsolatedService(Intent service, int flags, String instanceName, Executor executor, ServiceConnection conn)
      Variation of bindService(Intent, BindServiceFlags, Executor, ServiceConnection)that, in the specific case of isolated
 services, allows the caller to generate multiple instances of a service
 from a single component declaration. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, int flags, Executor executor, ServiceConnection conn)
      Same as bindService(Intent, ServiceConnection, int)with executor to control ServiceConnection
 callbacks. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, ServiceConnection conn, Context.BindServiceFlags flags)
      See bindService(android.content.Intent, android.content.ServiceConnection, int)CallBindServiceFlags.of(long)to obtain a BindServiceFlags object. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, ServiceConnection conn, int flags)
      Connects to an application service, creating it if needed.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, Context.BindServiceFlags flags, Executor executor, ServiceConnection conn)
      See bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection)CallBindServiceFlags.of(long)to obtain a BindServiceFlags object. |  
  
  
    | 
        
        
        
        
        
        int | 
      checkCallingOrSelfPermission(String permission)
      Determine whether the calling process of an IPC or you have been
 granted a particular permission.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkCallingOrSelfUriPermission(Uri uri, int modeFlags)
      Determine whether the calling process of an IPC or you has been granted
 permission to access a specific URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int[] | 
      checkCallingOrSelfUriPermissions(List<Uri> uris, int modeFlags)
      Determine whether the calling process of an IPC or you has been granted
 permission to access a list of URIs.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkCallingPermission(String permission)
      Determine whether the calling process of an IPC you are handling has been
 granted a particular permission.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkCallingUriPermission(Uri uri, int modeFlags)
      Determine whether the calling process and uid has been
 granted permission to access a specific URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int[] | 
      checkCallingUriPermissions(List<Uri> uris, int modeFlags)
      Determine whether the calling process and uid has been
 granted permission to access a list of URIs.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkContentUriPermissionFull(Uri uri, int pid, int uid, int modeFlags)
      Determine whether a particular process and uid has been granted
 permission to access a specific content URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkPermission(String permission, int pid, int uid)
      Determine whether the given permission is allowed for a particular
 process and user ID running in the system.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkSelfPermission(String permission)
      Determine whether you have been granted a particular permission.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)
      Check both a Uri and normal permission.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkUriPermission(Uri uri, int pid, int uid, int modeFlags)
      Determine whether a particular process and uid has been granted
 permission to access a specific URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int[] | 
      checkUriPermissions(List<Uri> uris, int pid, int uid, int modeFlags)
      Determine whether a particular process and uid has been granted
 permission to access a list of URIs.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      clearWallpaper()
      
      This method is deprecated.
    Use WallpaperManager.clear()instead.This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER. |  
  
  
    | 
        
        
        
        
        
        Context | 
      createAttributionContext(String attributionTag)
      Return a new Context object for the current Context but attribute to a different tag.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createConfigurationContext(Configuration overrideConfiguration)
      Return a new Context object for the current Context but whose resources
 are adjusted to match the given Configuration.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createContext(ContextParams contextParams)
      Creates a context with specific properties and behaviors.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createDeviceContext(int deviceId)
      Returns a new Contextobject from the current context but with device association
 given by thedeviceId. |  
  
  
    | 
        
        
        
        
        
        Context | 
      createDeviceProtectedStorageContext()
      Return a new Context object for the current Context but whose storage
 APIs are backed by device-protected storage.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createDisplayContext(Display display)
      Returns a new Contextobject from the current context but with resources
 adjusted to match the metrics ofdisplay. |  
  
  
    | 
        
        
        
        
        
        Context | 
      createPackageContext(String packageName, int flags)
      Return a new Context object for the given application name.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createWindowContext(int type, Bundle options)
      Creates a Context for a non-activity window.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createWindowContext(Display display, int type, Bundle options)
      Creates a Contextfor a non-activitywindow on the givenDisplay. |  
  
  
    | 
        
        
        
        
        
        String[] | 
      databaseList()
      Returns an array of strings naming the private databases associated with
 this Context's application package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      deleteDatabase(String name)
      Delete an existing private SQLiteDatabase associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      deleteFile(String name)
      Delete the given private file associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      deleteSharedPreferences(String name)
      Delete an existing shared preferences file.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      enforceCallingOrSelfPermission(String permission, String message)
      If neither you nor the calling process of an IPC you are
 handling has been granted a particular permission, throw a
 SecurityException. |  
  
  
    | 
        
        
        
        
        
        void | 
      enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message)
      If the calling process of an IPC or you has not been
 granted permission to access a specific URI, throw SecurityException. |  
  
  
    | 
        
        
        
        
        
        void | 
      enforceCallingPermission(String permission, String message)
      If the calling process of an IPC you are handling has not been
 granted a particular permission, throw a SecurityException. |  
  
  
    | 
        
        
        
        
        
        void | 
      enforceCallingUriPermission(Uri uri, int modeFlags, String message)
      If the calling process and uid has not been granted
 permission to access a specific URI, throw SecurityException. |  
  
  
    | 
        
        
        
        
        
        void | 
      enforcePermission(String permission, int pid, int uid, String message)
      If the given permission is not allowed for a particular process
 and user ID running in the system, throw a SecurityException. |  
  
  
    | 
        
        
        
        
        
        void | 
      enforceUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message)
      Enforce both a Uri and normal permission.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      enforceUriPermission(Uri uri, int pid, int uid, int modeFlags, String message)
      If a particular process and uid has not been granted
 permission to access a specific URI, throw SecurityException. |  
  
  
    | 
        
        
        
        
        
        String[] | 
      fileList()
      Returns an array of strings naming the private files associated with
 this Context's application package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      getApplicationContext()
      Return the context of the single, global Application object of the
 current process.
        
    
 |  
  
  
    | 
        
        
        
        
        
        ApplicationInfo | 
      getApplicationInfo()
      Return the full application info for this context's package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        AssetManager | 
      getAssets()
      Returns an AssetManager instance for the application's package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        AttributionSource | 
      getAttributionSource()
      
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      getBaseContext()
       |  
  
  
    | 
        
        
        
        
        
        File | 
      getCacheDir()
      Returns the absolute path to the application specific cache directory on
 the filesystem.
        
    
 |  
  
  
    | 
        
        
        
        
        
        ClassLoader | 
      getClassLoader()
      Return a class loader you can use to retrieve classes in this package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getCodeCacheDir()
      Returns the absolute path to the application specific cache directory on
 the filesystem designed for storing cached code.
        
    
 |  
  
  
    | 
        
        
        
        
        
        ContentResolver | 
      getContentResolver()
      Return a ContentResolver instance for your application's package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getDataDir()
      Returns the absolute path to the directory on the filesystem where all
 private files belonging to this app are stored.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getDatabasePath(String name)
      Returns the absolute path on the filesystem where a database created with
 openOrCreateDatabase(String, int, CursorFactory)is stored. |  
  
  
    | 
        
        
        
        
        
        int | 
      getDeviceId()
      Gets the device ID this context is associated with.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getDir(String name, int mode)
      Retrieve, creating if needed, a new directory in which the application
 can place its own custom data files.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Display | 
      getDisplay()
      Get the display this context is associated with.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getExternalCacheDir()
      Returns absolute path to application-specific directory on the primary
 shared/external storage device where the application can place cache
 files it owns.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File[] | 
      getExternalCacheDirs()
      Returns absolute paths to application-specific directories on all
 shared/external storage devices where the application can place cache
 files it owns.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getExternalFilesDir(String type)
      Returns the absolute path to the directory on the primary shared/external
 storage device where the application can place persistent files it owns.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File[] | 
      getExternalFilesDirs(String type)
      Returns absolute paths to application-specific directories on all
 shared/external storage devices where the application can place
 persistent files it owns.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File[] | 
      getExternalMediaDirs()
      
      This method is deprecated.
    These directories still exist and are scanned, but developers
             are encouraged to migrate to inserting content into a
             MediaStorecollection directly, as any app can
             contribute new media toMediaStorewith no
             permissions required, starting inBuild.VERSION_CODES.Q. |  
  
  
    | 
        
        
        
        
        
        File | 
      getFileStreamPath(String name)
      Returns the absolute path on the filesystem where a file created with
 openFileOutput(String, int)is stored. |  
  
  
    | 
        
        
        
        
        
        File | 
      getFilesDir()
      Returns the absolute path to the directory on the filesystem where files
 created with openFileOutput(String, int)are stored. |  
  
  
    | 
        
        
        
        
        
        Executor | 
      getMainExecutor()
      Return an Executorthat will run enqueued tasks on the main
 thread associated with this context. |  
  
  
    | 
        
        
        
        
        
        Looper | 
      getMainLooper()
      Return the Looper for the main thread of the current process.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File | 
      getNoBackupFilesDir()
      Returns the absolute path to the directory on the filesystem similar to
 getFilesDir(). |  
  
  
    | 
        
        
        
        
        
        File | 
      getObbDir()
      Return the primary shared/external storage directory where this
 application's OBB files (if there are any) can be found.
        
    
 |  
  
  
    | 
        
        
        
        
        
        File[] | 
      getObbDirs()
      Returns absolute paths to application-specific directories on all
 shared/external storage devices where the application's OBB files (if
 there are any) can be found.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      getPackageCodePath()
      Return the full path to this context's primary Android package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        PackageManager | 
      getPackageManager()
      Return PackageManager instance to find global package information.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      getPackageName()
      Return the name of this application's package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      getPackageResourcePath()
      Return the full path to this context's primary Android package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        ContextParams | 
      getParams()
      Return the set of parameters which this Context was created with, if it
 was created via createContext(android.content.ContextParams). |  
  
  
    | 
        
        
        
        
        
        Resources | 
      getResources()
      Returns a Resources instance for the application's package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        SharedPreferences | 
      getSharedPreferences(String name, int mode)
      Retrieve and hold the contents of the preferences file 'name', returning
 a SharedPreferences through which you can retrieve and modify its
 values.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Object | 
      getSystemService(String name)
      Return the handle to a system-level service by name.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      getSystemServiceName(Class<?> serviceClass)
      Gets the name of the system-level service that is represented by the specified class.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Resources.Theme | 
      getTheme()
      Return the Theme object associated with this Context.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Drawable | 
      getWallpaper()
      
      This method is deprecated.
    Use WallpaperManager.get()instead. |  
  
  
    | 
        
        
        
        
        
        int | 
      getWallpaperDesiredMinimumHeight()
      
      This method is deprecated.
    Use WallpaperManager.getDesiredMinimumHeight()instead. |  
  
  
    | 
        
        
        
        
        
        int | 
      getWallpaperDesiredMinimumWidth()
      
      This method is deprecated.
    Use WallpaperManager.getDesiredMinimumWidth()instead. |  
  
  
    | 
        
        
        
        
        
        void | 
      grantUriPermission(String toPackage, Uri uri, int modeFlags)
      Grant permission to access a specific Uri to another package, regardless
 of whether that package has general permission to access the Uri's
 content provider.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      isDeviceProtectedStorage()
      Indicates if the storage APIs of this Context are backed by
 device-protected storage.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      isRestricted()
      Indicates whether this Context is restricted.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      moveDatabaseFrom(Context sourceContext, String name)
      Move an existing database file from the given source storage context to
 this context.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      moveSharedPreferencesFrom(Context sourceContext, String name)
      Move an existing shared preferences file from the given source storage
 context to this context.
        
    
 |  
  
  
    | 
        
        
        
        
        
        FileInputStream | 
      openFileInput(String name)
      Open a private file associated with this Context's application package
 for reading.
        
    
 |  
  
  
    | 
        
        
        
        
        
        FileOutputStream | 
      openFileOutput(String name, int mode)
      Open a private file associated with this Context's application package
 for writing.
        
    
 |  
  
  
    | 
        
        
        
        
        
        SQLiteDatabase | 
      openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)
      Open a new private SQLiteDatabase associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        SQLiteDatabase | 
      openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)
      Open a new private SQLiteDatabase associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Drawable | 
      peekWallpaper()
      
      This method is deprecated.
    Use WallpaperManager.peek()instead. |  
  
  
    | 
        
        
        
        
        
        void | 
      registerComponentCallbacks(ComponentCallbacks callback)
      Add a new ComponentCallbacksto the base application of the
 Context, which will be called at the same times as the ComponentCallbacks
 methods of activities and other components are called. |  
  
  
    | 
        
        
        
        
        
        void | 
      registerDeviceIdChangeListener(Executor executor, IntConsumer listener)
      Adds a new device ID changed listener to the Context, which will be called when
 the device association is changed by the system. |  
  
  
    | 
        
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter)
      Register a BroadcastReceiver to be run in the main activity thread.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter, int flags)
      Register to receive intent broadcasts, with the receiver optionally being
 exposed to Instant Apps.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler, int flags)
      Register to receive intent broadcasts, to run in the context of
 scheduler.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)
      Register to receive intent broadcasts, to run in the context of
 scheduler.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      removeStickyBroadcast(Intent intent)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      removeStickyBroadcastAsUser(Intent intent, UserHandle user)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      revokeSelfPermissionsOnKill(Collection<String> permissions)
      Triggers the revocation of one or more permissions for the calling package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      revokeUriPermission(Uri uri, int modeFlags)
      Remove all permissions to access a particular content provider Uri
 that were previously added with grantUriPermission(String, Uri, int)or any other mechanism. |  
  
  
    | 
        
        
        
        
        
        void | 
      revokeUriPermission(String targetPackage, Uri uri, int modeFlags)
      Remove permissions to access a particular content provider Uri
 that were previously added with grantUriPermission(String, Uri, int)for a specific target
 package. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcast(Intent intent, String receiverPermission, Bundle options)
      Broadcast the given intent to all interested BroadcastReceivers, allowing
 an optional required permission to be enforced.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcast(Intent intent, String receiverPermission)
      Broadcast the given intent to all interested BroadcastReceivers, allowing
 an optional required permission to be enforced.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcast(Intent intent)
      Broadcast the given intent to all interested BroadcastReceivers.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcastAsUser(Intent intent, UserHandle user)
      Version of sendBroadcast(android.content.Intent)that allows you to specify the
 user the broadcast will be sent to. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission)
      Version of sendBroadcast(android.content.Intent, java.lang.String)that allows you to specify the
 user the broadcast will be sent to. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of
 sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)that allows you to specify the App Op to enforce restrictions on which receivers
 the broadcast will be sent to. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, int initialCode, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, String initialData, Bundle initialExtras, Bundle options)
      
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of sendBroadcast(android.content.Intent)that allows you to
 receive data back from the broadcast. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options)
      Broadcast the given intent to all interested BroadcastReceivers, delivering
 them one at a time to allow more preferred receivers to consume the
 broadcast before it is delivered to less preferred receivers.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of sendBroadcast(android.content.Intent)that allows you to
 receive data back from the broadcast. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission)
      Broadcast the given intent to all interested BroadcastReceivers, delivering
 them one at a time to allow more preferred receivers to consume the
 broadcast before it is delivered to less preferred receivers.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of
 sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)that allows you to specify the
 user the broadcast will be sent to. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendStickyBroadcast(Intent intent)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendStickyBroadcast(Intent intent, Bundle options)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendStickyBroadcastAsUser(Intent intent, UserHandle user)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      
      This method is deprecated.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      setTheme(int resid)
      Set the base theme for this context.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      setWallpaper(Bitmap bitmap)
      
      This method is deprecated.
    Use WallpaperManager.set()instead.This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER. |  
  
  
    | 
        
        
        
        
        
        void | 
      setWallpaper(InputStream data)
      
      This method is deprecated.
    Use WallpaperManager.set()instead.This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER. |  
  
  
    | 
        
        
        
        
        
        void | 
      startActivities(Intent[] intents, Bundle options)
      Launch multiple new activities.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      startActivities(Intent[] intents)
      Same as startActivities(android.content.Intent[], android.os.Bundle)with no options
 specified. |  
  
  
    | 
        
        
        
        
        
        void | 
      startActivity(Intent intent)
      Same as startActivity(android.content.Intent, android.os.Bundle)with no options
 specified. |  
  
  
    | 
        
        
        
        
        
        void | 
      startActivity(Intent intent, Bundle options)
      Launch a new activity.
        
    
 |  
  
  
    | 
        
        
        
        
        
        ComponentName | 
      startForegroundService(Intent service)
      Similar to startService(android.content.Intent), but with an implicit promise that the
 Service will callstartForeground(int, android.app.Notification)once it begins running. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      startInstrumentation(ComponentName className, String profileFile, Bundle arguments)
      Start executing an Instrumentationclass. |  
  
  
    | 
        
        
        
        
        
        void | 
      startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
      Same as startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle)with no options specified. |  
  
  
    | 
        
        
        
        
        
        void | 
      startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
      Like startActivity(android.content.Intent, android.os.Bundle), but taking a IntentSender
 to start. |  
  
  
    | 
        
        
        
        
        
        ComponentName | 
      startService(Intent service)
      Request that a given application service be started.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      stopService(Intent name)
      Request that a given application service be stopped.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      unbindService(ServiceConnection conn)
      Disconnect from an application service.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      unregisterComponentCallbacks(ComponentCallbacks callback)
      Remove a ComponentCallbacksobject that was previously registered
 withregisterComponentCallbacks(android.content.ComponentCallbacks). |  
  
  
    | 
        
        
        
        
        
        void | 
      unregisterDeviceIdChangeListener(IntConsumer listener)
      Removes a device ID changed listener from the Context.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      unregisterReceiver(BroadcastReceiver receiver)
      Unregister a previously registered BroadcastReceiver.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      updateServiceGroup(ServiceConnection conn, int group, int importance)
      For a service previously bound with bindService(Intent, BindServiceFlags, Executor, ServiceConnection)or a related method, change
 how the system manages that service's process in relation to other processes. |  | 
| 
    From class
      
        
          android.content.Context
        
      
      
  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindIsolatedService(Intent service, int flags, String instanceName, Executor executor, ServiceConnection conn)
      Variation of bindService(Intent, BindServiceFlags, Executor, ServiceConnection)that, in the specific case of isolated
 services, allows the caller to generate multiple instances of a service
 from a single component declaration. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindIsolatedService(Intent service, Context.BindServiceFlags flags, String instanceName, Executor executor, ServiceConnection conn)
      See bindIsolatedService(android.content.Intent, int, java.lang.String, java.util.concurrent.Executor, android.content.ServiceConnection)CallBindServiceFlags.of(long)to obtain a BindServiceFlags object. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, int flags, Executor executor, ServiceConnection conn)
      Same as bindService(Intent, ServiceConnection, int)with executor to control ServiceConnection
 callbacks. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, ServiceConnection conn, Context.BindServiceFlags flags)
      See bindService(android.content.Intent, android.content.ServiceConnection, int)CallBindServiceFlags.of(long)to obtain a BindServiceFlags object. |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      bindService(Intent service, ServiceConnection conn, int flags)
      Connects to an application service, creating it if needed.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindService(Intent service, Context.BindServiceFlags flags, Executor executor, ServiceConnection conn)
      See bindService(android.content.Intent, int, java.util.concurrent.Executor, android.content.ServiceConnection)CallBindServiceFlags.of(long)to obtain a BindServiceFlags object. |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindServiceAsUser(Intent service, ServiceConnection conn, int flags, UserHandle user)
      Binds to a service in the given userin the same manner asbindService(Intent, BindServiceFlags, Executor, ServiceConnection). |  
  
  
    | 
        
        
        
        
        
        boolean | 
      bindServiceAsUser(Intent service, ServiceConnection conn, Context.BindServiceFlags flags, UserHandle user)
      See bindServiceAsUser(android.content.Intent, android.content.ServiceConnection, int, android.os.UserHandle)CallBindServiceFlags.of(long)to obtain a BindServiceFlags object. |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkCallingOrSelfPermission(String permission)
      Determine whether the calling process of an IPC or you have been
 granted a particular permission.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkCallingOrSelfUriPermission(Uri uri, int modeFlags)
      Determine whether the calling process of an IPC or you has been granted
 permission to access a specific URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int[] | 
      checkCallingOrSelfUriPermissions(List<Uri> uris, int modeFlags)
      Determine whether the calling process of an IPC or you has been granted
 permission to access a list of URIs.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkCallingPermission(String permission)
      Determine whether the calling process of an IPC you are handling has been
 granted a particular permission.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkCallingUriPermission(Uri uri, int modeFlags)
      Determine whether the calling process and uid has been
 granted permission to access a specific URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int[] | 
      checkCallingUriPermissions(List<Uri> uris, int modeFlags)
      Determine whether the calling process and uid has been
 granted permission to access a list of URIs.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int | 
      checkContentUriPermissionFull(Uri uri, int pid, int uid, int modeFlags)
      Determine whether a particular process and uid has been granted
 permission to access a specific content URI.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkPermission(String permission, int pid, int uid)
      Determine whether the given permission is allowed for a particular
 process and user ID running in the system.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkSelfPermission(String permission)
      Determine whether you have been granted a particular permission.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags)
      Check both a Uri and normal permission.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      checkUriPermission(Uri uri, int pid, int uid, int modeFlags)
      Determine whether a particular process and uid has been granted
 permission to access a specific URI.
        
    
 |  
  
  
    | 
        
        
        
        
        
        int[] | 
      checkUriPermissions(List<Uri> uris, int pid, int uid, int modeFlags)
      Determine whether a particular process and uid has been granted
 permission to access a list of URIs.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      clearWallpaper()
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.clear()instead.This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER. |  
  
  
    | 
        
        
        
        
        
        Context | 
      createAttributionContext(String attributionTag)
      Return a new Context object for the current Context but attribute to a different tag.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Context | 
      createConfigurationContext(Configuration overrideConfiguration)
      Return a new Context object for the current Context but whose resources
 are adjusted to match the given Configuration.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createContext(ContextParams contextParams)
      Creates a context with specific properties and behaviors.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Context | 
      createContextForSplit(String splitName)
      Return a new Context object for the given split name.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createDeviceContext(int deviceId)
      Returns a new Contextobject from the current context but with device association
 given by thedeviceId. |  
  
  
    | 
        abstract
        
        
        
        
        Context | 
      createDeviceProtectedStorageContext()
      Return a new Context object for the current Context but whose storage
 APIs are backed by device-protected storage.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Context | 
      createDisplayContext(Display display)
      Returns a new Contextobject from the current context but with resources
 adjusted to match the metrics ofdisplay. |  
  
  
    | 
        abstract
        
        
        
        
        Context | 
      createPackageContext(String packageName, int flags)
      Return a new Context object for the given application name.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createWindowContext(int type, Bundle options)
      Creates a Context for a non-activity window.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Context | 
      createWindowContext(Display display, int type, Bundle options)
      Creates a Contextfor a non-activitywindow on the givenDisplay. |  
  
  
    | 
        abstract
        
        
        
        
        String[] | 
      databaseList()
      Returns an array of strings naming the private databases associated with
 this Context's application package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      deleteDatabase(String name)
      Delete an existing private SQLiteDatabase associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      deleteFile(String name)
      Delete the given private file associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      deleteSharedPreferences(String name)
      Delete an existing shared preferences file.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforceCallingOrSelfPermission(String permission, String message)
      If neither you nor the calling process of an IPC you are
 handling has been granted a particular permission, throw a
 SecurityException. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforceCallingOrSelfUriPermission(Uri uri, int modeFlags, String message)
      If the calling process of an IPC or you has not been
 granted permission to access a specific URI, throw SecurityException. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforceCallingPermission(String permission, String message)
      If the calling process of an IPC you are handling has not been
 granted a particular permission, throw a SecurityException. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforceCallingUriPermission(Uri uri, int modeFlags, String message)
      If the calling process and uid has not been granted
 permission to access a specific URI, throw SecurityException. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforcePermission(String permission, int pid, int uid, String message)
      If the given permission is not allowed for a particular process
 and user ID running in the system, throw a SecurityException. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforceUriPermission(Uri uri, String readPermission, String writePermission, int pid, int uid, int modeFlags, String message)
      Enforce both a Uri and normal permission.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      enforceUriPermission(Uri uri, int pid, int uid, int modeFlags, String message)
      If a particular process and uid has not been granted
 permission to access a specific URI, throw SecurityException. |  
  
  
    | 
        abstract
        
        
        
        
        String[] | 
      fileList()
      Returns an array of strings naming the private files associated with
 this Context's application package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Context | 
      getApplicationContext()
      Return the context of the single, global Application object of the
 current process.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        ApplicationInfo | 
      getApplicationInfo()
      Return the full application info for this context's package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        AssetManager | 
      getAssets()
      Returns an AssetManager instance for the application's package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        AttributionSource | 
      getAttributionSource()
       |  
  
  
    | 
        
        
        
        
        
        String | 
      getAttributionTag()
      Attribution can be used in complex apps to logically separate parts of the app.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getCacheDir()
      Returns the absolute path to the application specific cache directory on
 the filesystem.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        ClassLoader | 
      getClassLoader()
      Return a class loader you can use to retrieve classes in this package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getCodeCacheDir()
      Returns the absolute path to the application specific cache directory on
 the filesystem designed for storing cached code.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        int | 
      getColor(int id)
      Returns a color associated with a particular resource ID and styled for
 the current theme.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        ColorStateList | 
      getColorStateList(int id)
      Returns a color state list associated with a particular resource ID and
 styled for the current theme.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        ContentResolver | 
      getContentResolver()
      Return a ContentResolver instance for your application's package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getDataDir()
      Returns the absolute path to the directory on the filesystem where all
 private files belonging to this app are stored.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getDatabasePath(String name)
      Returns the absolute path on the filesystem where a database created with
 openOrCreateDatabase(String, int, CursorFactory)is stored. |  
  
  
    | 
        
        
        
        
        
        int | 
      getDeviceId()
      Gets the device ID this context is associated with.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getDir(String name, int mode)
      Retrieve, creating if needed, a new directory in which the application
 can place its own custom data files.
        
    
 |  
  
  
    | 
        
        
        
        
        
        Display | 
      getDisplay()
      Get the display this context is associated with.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        Drawable | 
      getDrawable(int id)
      Returns a drawable object associated with a particular resource ID and
 styled for the current theme.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getExternalCacheDir()
      Returns absolute path to application-specific directory on the primary
 shared/external storage device where the application can place cache
 files it owns.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File[] | 
      getExternalCacheDirs()
      Returns absolute paths to application-specific directories on all
 shared/external storage devices where the application can place cache
 files it owns.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getExternalFilesDir(String type)
      Returns the absolute path to the directory on the primary shared/external
 storage device where the application can place persistent files it owns.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File[] | 
      getExternalFilesDirs(String type)
      Returns absolute paths to application-specific directories on all
 shared/external storage devices where the application can place
 persistent files it owns.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File[] | 
      getExternalMediaDirs()
      
      This method was deprecated
      in API level 30.
    These directories still exist and are scanned, but developers
             are encouraged to migrate to inserting content into a
             MediaStorecollection directly, as any app can
             contribute new media toMediaStorewith no
             permissions required, starting inBuild.VERSION_CODES.Q. |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getFileStreamPath(String name)
      Returns the absolute path on the filesystem where a file created with
 openFileOutput(String, int)is stored. |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getFilesDir()
      Returns the absolute path to the directory on the filesystem where files
 created with openFileOutput(String, int)are stored. |  
  
  
    | 
        
        
        
        
        
        Executor | 
      getMainExecutor()
      Return an Executorthat will run enqueued tasks on the main
 thread associated with this context. |  
  
  
    | 
        abstract
        
        
        
        
        Looper | 
      getMainLooper()
      Return the Looper for the main thread of the current process.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getNoBackupFilesDir()
      Returns the absolute path to the directory on the filesystem similar to
 getFilesDir(). |  
  
  
    | 
        abstract
        
        
        
        
        File | 
      getObbDir()
      Return the primary shared/external storage directory where this
 application's OBB files (if there are any) can be found.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        File[] | 
      getObbDirs()
      Returns absolute paths to application-specific directories on all
 shared/external storage devices where the application's OBB files (if
 there are any) can be found.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      getOpPackageName()
      Return the package name that should be used for AppOpsManagercalls from
 this context, so that app ops manager's uid verification will work with the name. |  
  
  
    | 
        abstract
        
        
        
        
        String | 
      getPackageCodePath()
      Return the full path to this context's primary Android package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        PackageManager | 
      getPackageManager()
      Return PackageManager instance to find global package information.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        String | 
      getPackageName()
      Return the name of this application's package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        String | 
      getPackageResourcePath()
      Return the full path to this context's primary Android package.
        
    
 |  
  
  
    | 
        
        
        
        
        
        ContextParams | 
      getParams()
      Return the set of parameters which this Context was created with, if it
 was created via createContext(android.content.ContextParams). |  
  
  
    | 
        abstract
        
        
        
        
        Resources | 
      getResources()
      Returns a Resources instance for the application's package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        SharedPreferences | 
      getSharedPreferences(String name, int mode)
      Retrieve and hold the contents of the preferences file 'name', returning
 a SharedPreferences through which you can retrieve and modify its
 values.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        String | 
      getString(int resId)
      Returns a localized string from the application's package's
 default string table.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        String | 
      getString(int resId, Object... formatArgs)
      Returns a localized formatted string from the application's package's
 default string table, substituting the format arguments as defined in
 FormatterandString.format(String, Object). |  
  
  
    | 
        
        
        
        final
        <T>
        T | 
      getSystemService(Class<T> serviceClass)
      Return the handle to a system-level service by class.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Object | 
      getSystemService(String name)
      Return the handle to a system-level service by name.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        String | 
      getSystemServiceName(Class<?> serviceClass)
      Gets the name of the system-level service that is represented by the specified class.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        CharSequence | 
      getText(int resId)
      Return a localized, styled CharSequence from the application's package's
 default string table.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Resources.Theme | 
      getTheme()
      Return the Theme object associated with this Context.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Drawable | 
      getWallpaper()
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.get()instead. |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      getWallpaperDesiredMinimumHeight()
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.getDesiredMinimumHeight()instead. |  
  
  
    | 
        abstract
        
        
        
        
        int | 
      getWallpaperDesiredMinimumWidth()
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.getDesiredMinimumWidth()instead. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      grantUriPermission(String toPackage, Uri uri, int modeFlags)
      Grant permission to access a specific Uri to another package, regardless
 of whether that package has general permission to access the Uri's
 content provider.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      isDeviceProtectedStorage()
      Indicates if the storage APIs of this Context are backed by
 device-protected storage.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      isRestricted()
      Indicates whether this Context is restricted.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      isUiContext()
      Returns trueif the context is a UI context which can access UI components such asWindowManager,LayoutInflaterorWallpaperManager. |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      moveDatabaseFrom(Context sourceContext, String name)
      Move an existing database file from the given source storage context to
 this context.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      moveSharedPreferencesFrom(Context sourceContext, String name)
      Move an existing shared preferences file from the given source storage
 context to this context.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        TypedArray | 
      obtainStyledAttributes(AttributeSet set, int[] attrs)
      Retrieve styled attribute information in this Context's theme.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        TypedArray | 
      obtainStyledAttributes(AttributeSet set, int[] attrs, int defStyleAttr, int defStyleRes)
      Retrieve styled attribute information in this Context's theme.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        TypedArray | 
      obtainStyledAttributes(int resid, int[] attrs)
      Retrieve styled attribute information in this Context's theme.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        TypedArray | 
      obtainStyledAttributes(int[] attrs)
      Retrieve styled attribute information in this Context's theme.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        FileInputStream | 
      openFileInput(String name)
      Open a private file associated with this Context's application package
 for reading.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        FileOutputStream | 
      openFileOutput(String name, int mode)
      Open a private file associated with this Context's application package
 for writing.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        SQLiteDatabase | 
      openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory, DatabaseErrorHandler errorHandler)
      Open a new private SQLiteDatabase associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        SQLiteDatabase | 
      openOrCreateDatabase(String name, int mode, SQLiteDatabase.CursorFactory factory)
      Open a new private SQLiteDatabase associated with this Context's
 application package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Drawable | 
      peekWallpaper()
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.peek()instead. |  
  
  
    | 
        
        
        
        
        
        void | 
      registerComponentCallbacks(ComponentCallbacks callback)
      Add a new ComponentCallbacksto the base application of the
 Context, which will be called at the same times as the ComponentCallbacks
 methods of activities and other components are called. |  
  
  
    | 
        
        
        
        
        
        void | 
      registerDeviceIdChangeListener(Executor executor, IntConsumer listener)
      Adds a new device ID changed listener to the Context, which will be called when
 the device association is changed by the system. |  
  
  
    | 
        abstract
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter)
      Register a BroadcastReceiver to be run in the main activity thread.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter, int flags)
      Register to receive intent broadcasts, with the receiver optionally being
 exposed to Instant Apps.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler, int flags)
      Register to receive intent broadcasts, to run in the context of
 scheduler.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        Intent | 
      registerReceiver(BroadcastReceiver receiver, IntentFilter filter, String broadcastPermission, Handler scheduler)
      Register to receive intent broadcasts, to run in the context of
 scheduler.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      removeStickyBroadcast(Intent intent)
      
      This method was deprecated
      in API level 21.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      removeStickyBroadcastAsUser(Intent intent, UserHandle user)
      
      This method was deprecated
      in API level 21.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      revokeSelfPermissionOnKill(String permName)
      Triggers the asynchronous revocation of a runtime permission.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      revokeSelfPermissionsOnKill(Collection<String> permissions)
      Triggers the revocation of one or more permissions for the calling package.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      revokeUriPermission(Uri uri, int modeFlags)
      Remove all permissions to access a particular content provider Uri
 that were previously added with grantUriPermission(String, Uri, int)or any other mechanism. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      revokeUriPermission(String toPackage, Uri uri, int modeFlags)
      Remove permissions to access a particular content provider Uri
 that were previously added with grantUriPermission(String, Uri, int)for a specific target
 package. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcast(Intent intent, String receiverPermission, Bundle options)
      Broadcast the given intent to all interested BroadcastReceivers, allowing
 an optional required permission to be enforced.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendBroadcast(Intent intent, String receiverPermission)
      Broadcast the given intent to all interested BroadcastReceivers, allowing
 an optional required permission to be enforced.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendBroadcast(Intent intent)
      Broadcast the given intent to all interested BroadcastReceivers.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendBroadcastAsUser(Intent intent, UserHandle user)
      Version of sendBroadcast(android.content.Intent)that allows you to specify the
 user the broadcast will be sent to. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission)
      Version of sendBroadcast(android.content.Intent, java.lang.String)that allows you to specify the
 user the broadcast will be sent to. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendBroadcastWithMultiplePermissions(Intent intent, String[] receiverPermissions)
      Broadcast the given intent to all interested BroadcastReceivers, allowing
 an array of required permissions to be enforced.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, String receiverAppOp, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of
 sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)that allows you to specify the App Op to enforce restrictions on which receivers
 the broadcast will be sent to. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of sendBroadcast(android.content.Intent)that allows you to
 receive data back from the broadcast. |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options)
      Broadcast the given intent to all interested BroadcastReceivers, delivering
 them one at a time to allow more preferred receivers to consume the
 broadcast before it is delivered to less preferred receivers.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission, Bundle options, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of sendBroadcast(android.content.Intent)that allows you to
 receive data back from the broadcast. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendOrderedBroadcast(Intent intent, String receiverPermission)
      Broadcast the given intent to all interested BroadcastReceivers, delivering
 them one at a time to allow more preferred receivers to consume the
 broadcast before it is delivered to less preferred receivers.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendOrderedBroadcastAsUser(Intent intent, UserHandle user, String receiverPermission, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      Version of
 sendOrderedBroadcast(android.content.Intent, java.lang.String, android.content.BroadcastReceiver, android.os.Handler, int, java.lang.String, android.os.Bundle)that allows you to specify the
 user the broadcast will be sent to. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendStickyBroadcast(Intent intent)
      
      This method was deprecated
      in API level 21.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      sendStickyBroadcast(Intent intent, Bundle options)
      
      This method was deprecated
      in API level 31.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendStickyBroadcastAsUser(Intent intent, UserHandle user)
      
      This method was deprecated
      in API level 21.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      
      This method was deprecated
      in API level 21.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      sendStickyOrderedBroadcastAsUser(Intent intent, UserHandle user, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras)
      
      This method was deprecated
      in API level 21.
    Sticky broadcasts should not be used.  They provide no security (anyone
 can access them), no protection (anyone can modify them), and many other problems.
 The recommended pattern is to use a non-sticky broadcast to report that something
 has changed, with another mechanism for apps to retrieve the current value whenever
 desired.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      setTheme(int resid)
      Set the base theme for this context.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      setWallpaper(Bitmap bitmap)
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.set()instead.This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      setWallpaper(InputStream data)
      
      This method was deprecated
      in API level 15.
    Use WallpaperManager.set()instead.This method requires the caller to hold the permission
 Manifest.permission.SET_WALLPAPER. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      startActivities(Intent[] intents, Bundle options)
      Launch multiple new activities.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      startActivities(Intent[] intents)
      Same as startActivities(android.content.Intent[], android.os.Bundle)with no options
 specified. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      startActivity(Intent intent)
      Same as startActivity(android.content.Intent, android.os.Bundle)with no options
 specified. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      startActivity(Intent intent, Bundle options)
      Launch a new activity.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        ComponentName | 
      startForegroundService(Intent service)
      Similar to startService(android.content.Intent), but with an implicit promise that the
 Service will callstartForeground(int, android.app.Notification)once it begins running. |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      startInstrumentation(ComponentName className, String profileFile, Bundle arguments)
      Start executing an Instrumentationclass. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags)
      Same as startIntentSender(android.content.IntentSender, android.content.Intent, int, int, int, android.os.Bundle)with no options specified. |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags, Bundle options)
      Like startActivity(android.content.Intent, android.os.Bundle), but taking a IntentSender
 to start. |  
  
  
    | 
        abstract
        
        
        
        
        ComponentName | 
      startService(Intent service)
      Request that a given application service be started.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        boolean | 
      stopService(Intent service)
      Request that a given application service be stopped.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      unbindService(ServiceConnection conn)
      Disconnect from an application service.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      unregisterComponentCallbacks(ComponentCallbacks callback)
      Remove a ComponentCallbacksobject that was previously registered
 withregisterComponentCallbacks(android.content.ComponentCallbacks). |  
  
  
    | 
        
        
        
        
        
        void | 
      unregisterDeviceIdChangeListener(IntConsumer listener)
      Removes a device ID changed listener from the Context.
        
    
 |  
  
  
    | 
        abstract
        
        
        
        
        void | 
      unregisterReceiver(BroadcastReceiver receiver)
      Unregister a previously registered BroadcastReceiver.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      updateServiceGroup(ServiceConnection conn, int group, int importance)
      For a service previously bound with bindService(Intent, BindServiceFlags, Executor, ServiceConnection)or a related method, change
 how the system manages that service's process in relation to other processes. |  | 
| 
    From class
      
        
          java.lang.Object
        
      
      
  
  
  
    | 
        
        
        
        
        
        Object | 
      clone()
      Creates and returns a copy of this object.
        
    
 |  
  
  
    | 
        
        
        
        
        
        boolean | 
      equals(Object obj)
      Indicates whether some other object is "equal to" this one.
        
    
 |  
  
  
    | 
        
        
        
        
        
        void | 
      finalize()
      Called by the garbage collector on an object when garbage collection
 determines that there are no more references to the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        Class<?> | 
      getClass()
      Returns the runtime class of this Object. |  
  
  
    | 
        
        
        
        
        
        int | 
      hashCode()
      Returns a hash code value for the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      notify()
      Wakes up a single thread that is waiting on this object's
 monitor.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      notifyAll()
      Wakes up all threads that are waiting on this object's monitor.
        
    
 |  
  
  
    | 
        
        
        
        
        
        String | 
      toString()
      Returns a string representation of the object.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait(long timeoutMillis, int nanos)
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted, or until a
 certain amount of real time has elapsed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait(long timeoutMillis)
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted, or until a
 certain amount of real time has elapsed.
        
    
 |  
  
  
    | 
        
        
        
        final
        
        void | 
      wait()
      Causes the current thread to wait until it is awakened, typically
 by being notified or interrupted.
        
    
 |  | 
|  | 
|  | 
Constants
    SERVICE_INTERFACE
    
public static final String SERVICE_INTERFACE
    
    
    
  The Intent that must be declared as handled by the service.
 To be supported, the service must also require the
 Manifest.permission.BIND_AUTOFILL_SERVICE permission so
 that other applications can not abuse it.
    
      Constant Value:
      
          "android.service.autofill.AutofillService"
      
    
 
    
    
public static final String SERVICE_META_DATA
    
    
    
  Name under which a AutoFillService component publishes information about itself.
 This meta-data should reference an XML resource containing a
 <autofill-service> tag.
 This is a a sample XML file configuring an AutoFillService:
 
 <autofill-service
     android:settingsActivity="foo.bar.SettingsActivity"
     . . .
 />
    
      Constant Value:
      
          "android.autofill"
      
    
 
Public constructors
    AutofillService
    
public AutofillService ()
    
    
    
  
 
Public methods
    onBind
    
public final IBinder onBind (Intent intent)
    
    
    
  Return the communication channel to the service.  May return null if
 clients can not bind to the service.  The returned
 IBinder is usually for a complex interface
 that has been described using
 aidl.
 
Note that unlike other application components, calls on to the
 IBinder interface returned here may not happen on the main thread
 of the process.  More information about the main thread can be found in
 Processes and
 Threads.
    
    | Parameters | 
|---|
      
        | intent | Intent: The Intent that was used to bind to this service,
 as given toContext.bindService.  Note that any extras that were included with
 the Intent at that point will not be seen here. | 
    
    
      | Returns | 
|---|
      
        | IBinder | Return an IBinder through which clients can call on to the
         service. | 
    
 
    onConnected
    
public void onConnected ()
    
    
    
  Called when the Android system connects to service.
 
You should generally do initialization here rather than in onCreate().
 
    onCreate
    
public void onCreate ()
    
    
    
  Called by the system when the service is first created.  Do not call this method directly.
 If you override this method you must call through to the
 superclass implementation.
 
    onDisconnected
    
public void onDisconnected ()
    
    
    
  Called when the Android system disconnects from the service.
 
 At this point this service may no longer be an active AutofillService.
 It should not make calls on AutofillManager that requires the caller to be
 the current service.
 
    onFillRequest
    
public abstract void onFillRequest (FillRequest request, 
                CancellationSignal cancellationSignal, 
                FillCallback callback)
    
    
    
  Called by the Android system do decide if a screen can be autofilled by the service.
 
Service must call one of the FillCallback methods (like
 FillCallback.onSuccess(FillResponse)
 or FillCallback.onFailure(CharSequence))
 to notify the result of the request.
    
    | Parameters | 
|---|
      
        | request | FillRequest: therequestto handle.
        SeeFillResponsefor examples of multiple-sections requests.
 This value cannot benull. | 
      
        | cancellationSignal | CancellationSignal: signal for observing cancellation requests. The system will use
     this to notify you that the fill result is no longer needed and you should stop
     handling this fill request in order to save resources.
 This value cannot benull. | 
      
        | callback | FillCallback: object used to notify the result of the request.
 This value cannot benull. | 
    
 
    onSaveRequest
    
public abstract void onSaveRequest (SaveRequest request, 
                SaveCallback callback)
    
    
    
  Called when the user requests the service to save the contents of a screen.
 
If the service could not handle the request right away—for example, because it must
 launch an activity asking the user to authenticate first or because the network is
 down—the service could keep the request and reuse it later,
 but the service must always call SaveCallback.onSuccess() or
 SaveCallback.onSuccess(android.content.IntentSender) right away.
 
Note: To retrieve the actual value of fields input by the user, the service
 should call
 AssistStructure.ViewNode.getAutofillValue(); if it calls
 AssistStructure.ViewNode.getText() or other methods, there is no
 guarantee such method will return the most recent value of the field.
    
    | Parameters | 
|---|
      
        | request | SaveRequest: therequestto handle.
        SeeFillResponsefor examples of multiple-sections requests.
 This value cannot benull. | 
      
        | callback | SaveCallback: object used to notify the result of the request.
 This value cannot benull. | 
    
 
    onSavedDatasetsInfoRequest
    
public void onSavedDatasetsInfoRequest (SavedDatasetsInfoCallback callback)
    
    
    
  Called from system settings to display information about the datasets the user saved to this
 service.
 
There is no timeout for the request, but it's recommended to return the result within a
 few seconds, or the user may navigate away from the activity that would display the result.
    
    | Parameters | 
|---|
      
        | callback | SavedDatasetsInfoCallback: callback for responding to the request
 This value cannot benull. | 
    
 
    onSessionDestroyed
    
public void onSessionDestroyed (FillEventHistory history)
    
    
    
  Called when an Autofill context has ended and the Autofill session is finished. This will be
 called as the last step of the Autofill lifecycle described in AutofillManager.
 
This will also contain the finished Session's FillEventHistory, so providers do not need
 to explicitly call getFillEventHistory()
 
This will usually happens whenever AutofillManager.commit() or AutofillManager.cancel() is called.
    
    | Parameters | 
|---|
      
        | history | FillEventHistory: This value may benull. |