Added in API level 31

GlobalSearchSession

open class GlobalSearchSession : Closeable
kotlin.Any
   ↳ android.app.appsearch.GlobalSearchSession

Provides a connection to all AppSearch databases the querying application has been granted access to.

This class is thread safe.

Summary

Public methods
open Unit

Closes the GlobalSearchSession.

open Unit
getByDocumentId(packageName: String, databaseName: String, request: GetByDocumentIdRequest, executor: Executor, callback: BatchResultCallback<String!, GenericDocument!>)

Retrieves GenericDocument documents, belonging to the specified package name and database name and identified by the namespace and ids in the request, from the GlobalSearchSession database.

open Unit
getSchema(packageName: String, databaseName: String, executor: Executor, callback: Consumer<AppSearchResult<GetSchemaResponse!>!>)

Retrieves the collection of schemas most recently successfully provided to android.app.appsearch.AppSearchSession#setSchema for any types belonging to the requested package and database that the caller has been granted access to.

open Unit
registerObserverCallback(targetPackageName: String, spec: ObserverSpec, executor: Executor, observer: ObserverCallback)

Adds an ObserverCallback to monitor changes within the databases owned by targetPackageName if they match the given android.app.appsearch.observer.ObserverSpec.

open Unit

Reports that a particular document has been used from a system surface.

open SearchResults
search(queryExpression: String, searchSpec: SearchSpec)

Retrieves documents from all AppSearch databases that the querying application has access to.

open Unit
unregisterObserverCallback(targetPackageName: String, observer: ObserverCallback)

Removes previously registered ObserverCallback instances from the system.

Public methods

close

Added in API level 31
open fun close(): Unit

Closes the GlobalSearchSession. Persists all mutations, including usage reports, to disk.

Exceptions
java.lang.Exception if this resource cannot be closed
java.io.IOException if an I/O error occurs

getByDocumentId

Added in API level 33
open fun getByDocumentId(
    packageName: String,
    databaseName: String,
    request: GetByDocumentIdRequest,
    executor: Executor,
    callback: BatchResultCallback<String!, GenericDocument!>
): Unit

Retrieves GenericDocument documents, belonging to the specified package name and database name and identified by the namespace and ids in the request, from the GlobalSearchSession database.

If the package or database doesn't exist or if the calling package doesn't have access, the gets will be handled as failures in an AppSearchBatchResult object in the callback.

Parameters
packageName String: the name of the package to get from This value cannot be null.
databaseName String: the name of the database to get from This value cannot be null.
request GetByDocumentIdRequest: a request containing a namespace and IDs to get documents for. This value cannot be null.
executor Executor: Executor on which to invoke the callback. This value cannot be null. Callback and listener events are dispatched through this Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread.
callback BatchResultCallback<String!, GenericDocument!>: Callback to receive the pending result of performing this operation. The keys of the returned AppSearchBatchResult are the input IDs. The values are the returned GenericDocuments on success, or a failed AppSearchResult otherwise. IDs that are not found will return a failed AppSearchResult with a result code of AppSearchResult#RESULT_NOT_FOUND. If an unexpected internal error occurs in the AppSearch service, BatchResultCallback#onSystemError will be invoked with a Throwable. This value cannot be null.

getSchema

Added in API level 33
open fun getSchema(
    packageName: String,
    databaseName: String,
    executor: Executor,
    callback: Consumer<AppSearchResult<GetSchemaResponse!>!>
): Unit

Retrieves the collection of schemas most recently successfully provided to android.app.appsearch.AppSearchSession#setSchema for any types belonging to the requested package and database that the caller has been granted access to.

If the requested package/database combination does not exist or the caller has not been granted access to it, then an empty GetSchemaResponse will be returned.

Parameters
packageName String: the package that owns the requested AppSearchSchema instances. This value cannot be null.
databaseName String: the database that owns the requested AppSearchSchema instances. This value cannot be null.
executor Executor: This value cannot be null. Callback and listener events are dispatched through this Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread.
callback Consumer<AppSearchResult<GetSchemaResponse!>!>: This value cannot be null.
Return
Unit The pending GetSchemaResponse containing the schemas that the caller has access to or an empty GetSchemaResponse if the request package and database does not exist, has not set a schema or contains no schemas that are accessible to the caller.

registerObserverCallback

Added in API level 33
open fun registerObserverCallback(
    targetPackageName: String,
    spec: ObserverSpec,
    executor: Executor,
    observer: ObserverCallback
): Unit

Adds an ObserverCallback to monitor changes within the databases owned by targetPackageName if they match the given android.app.appsearch.observer.ObserverSpec.

The observer callback is only triggered for data that changes after it is registered. No notification about existing data is sent as a result of registering an observer. To find out about existing data, you must use the GlobalSearchSession#search API.

If the data owned by targetPackageName is not visible to you, the registration call will succeed but no notifications will be dispatched. Notifications could start flowing later if targetPackageName changes its schema visibility settings.

If no package matching targetPackageName exists on the system, the registration call will succeed but no notifications will be dispatched. Notifications could start flowing later if targetPackageName is installed and starts indexing data.

Parameters
targetPackageName String: Package whose changes to monitor This value cannot be null.
spec ObserverSpec: Specification of what types of changes to listen for This value cannot be null.
executor Executor: Executor on which to call the observer callback methods. This value cannot be null.
observer ObserverCallback: Callback to trigger when a schema or document changes This value cannot be null.
Exceptions
android.app.appsearch.exceptions.AppSearchException If an unexpected error occurs when trying to register an observer.

reportSystemUsage

Added in API level 31
open fun reportSystemUsage(
    request: ReportSystemUsageRequest,
    executor: Executor,
    callback: Consumer<AppSearchResult<Void!>!>
): Unit

Reports that a particular document has been used from a system surface.

See AppSearchSession#reportUsage for a general description of document usage, as well as an API that can be used by the app itself.

Usage reported via this method is accounted separately from usage reported via AppSearchSession#reportUsage and may be accessed using the constants SearchSpec#RANKING_STRATEGY_SYSTEM_USAGE_COUNT and SearchSpec#RANKING_STRATEGY_SYSTEM_USAGE_LAST_USED_TIMESTAMP.

Parameters
request ReportSystemUsageRequest: The usage reporting request. This value cannot be null.
executor Executor: Executor on which to invoke the callback. This value cannot be null. Callback and listener events are dispatched through this Executor, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use Context.getMainExecutor(). Otherwise, provide an Executor that dispatches to an appropriate thread.
callback Consumer<AppSearchResult<Void!>!>: Callback to receive errors. If the operation succeeds, the callback will be invoked with an AppSearchResult whose value is null. The callback will be invoked with an AppSearchResult of AppSearchResult#RESULT_SECURITY_ERROR if this API is invoked by an app which is not part of the system.
Added in API level 31
open fun search(
    queryExpression: String,
    searchSpec: SearchSpec
): SearchResults

Retrieves documents from all AppSearch databases that the querying application has access to.

Applications can be granted access to documents by specifying android.app.appsearch.SetSchemaRequest.Builder#setSchemaTypeVisibilityForPackage when building a schema.

Document access can also be granted to system UIs by specifying android.app.appsearch.SetSchemaRequest.Builder#setSchemaTypeDisplayedBySystem when building a schema.

See AppSearchSession#search for a detailed explanation on forming a query string.

This method is lightweight. The heavy work will be done in android.app.appsearch.SearchResults#getNextPage.

Parameters
queryExpression String: query string to search. This value cannot be null.
searchSpec SearchSpec: spec for setting document filters, adding projection, setting term match type, etc. This value cannot be null.
Return
SearchResults a SearchResults object for retrieved matched documents. This value cannot be null.

unregisterObserverCallback

Added in API level 33
open fun unregisterObserverCallback(
    targetPackageName: String,
    observer: ObserverCallback
): Unit

Removes previously registered ObserverCallback instances from the system.

All instances of ObserverCallback which are registered to observe targetPackageName and compare equal to the provided callback using the provided argument's ObserverCallback#equals will be removed.

If no matching observers have been registered, this method has no effect. If multiple matching observers have been registered, all will be removed.

Parameters
targetPackageName String: Package which the observers to be removed are listening to. This value cannot be null.
observer ObserverCallback: Callback to unregister. This value cannot be null.
Exceptions
android.app.appsearch.exceptions.AppSearchException if an error occurs trying to remove the observer, such as a failure to communicate with the system service. Note that no error will be thrown if the provided observer doesn't match any registered observer.