# EnterpriseGlobalSearchSession

Added in[API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in[T Extensions 13](https://developer.android.com/sdkExtensions)  
Summary:[Methods](https://developer.android.com/reference/android/app/appsearch/EnterpriseGlobalSearchSession#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/android/app/appsearch/EnterpriseGlobalSearchSession#inhmethods)  

# EnterpriseGlobalSearchSession

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/app/appsearch/EnterpriseGlobalSearchSession "View this page in Kotlin")\|Java

`
public


class
EnterpriseGlobalSearchSession
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|-----------------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.app.appsearch.EnterpriseGlobalSearchSession |

<br />

*** ** * ** ***

Provides a connection to all enterprise (work profile) AppSearch databases the querying application has been granted access to.

This session can be created from any user profile but will only properly return results when created from the main profile. If the user is not the main profile or an associated work profile does not exist, queries will still successfully complete but with empty results.

Schemas must be explicitly tagged enterprise and may require additional permissions to be visible from an enterprise session. Retrieved documents may also have certain fields restricted or modified unlike if they were retrieved directly from[GlobalSearchSession](https://developer.android.com/reference/android/app/appsearch/GlobalSearchSession)on the work profile.

This class is thread safe.  
**See also:**

- [GlobalSearchSession](https://developer.android.com/reference/android/app/appsearch/GlobalSearchSession)

## Summary

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              ### Public methods                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ||
|-------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` void`                                                                                         | ` `[getByDocumentId](https://developer.android.com/reference/android/app/appsearch/EnterpriseGlobalSearchSession#getByDocumentId(java.lang.String,%20java.lang.String,%20android.app.appsearch.GetByDocumentIdRequest,%20java.util.concurrent.Executor,%20android.app.appsearch.BatchResultCallback<java.lang.String,android.app.appsearch.GenericDocument>))`(`[String](https://developer.android.com/reference/java/lang/String)` packageName, `[String](https://developer.android.com/reference/java/lang/String)` databaseName, `[GetByDocumentIdRequest](https://developer.android.com/reference/android/app/appsearch/GetByDocumentIdRequest)` request, `[Executor](https://developer.android.com/reference/java/util/concurrent/Executor)` executor, `[BatchResultCallback](https://developer.android.com/reference/android/app/appsearch/BatchResultCallback)`<`[String](https://developer.android.com/reference/java/lang/String)`, `[GenericDocument](https://developer.android.com/reference/android/app/appsearch/GenericDocument)`> callback) ` Retrieves[GenericDocument](https://developer.android.com/reference/android/app/appsearch/GenericDocument)documents, belonging to the specified package name and database name and identified by the namespace and ids in the request, from the[GlobalSearchSession](https://developer.android.com/reference/android/app/appsearch/GlobalSearchSession)database.                                                 |
| ` void`                                                                                         | ` `[getSchema](https://developer.android.com/reference/android/app/appsearch/EnterpriseGlobalSearchSession#getSchema(java.lang.String,%20java.lang.String,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.GetSchemaResponse>>))`(`[String](https://developer.android.com/reference/java/lang/String)` packageName, `[String](https://developer.android.com/reference/java/lang/String)` databaseName, `[Executor](https://developer.android.com/reference/java/util/concurrent/Executor)` executor, `[Consumer](https://developer.android.com/reference/java/util/function/Consumer)`<`[AppSearchResult](https://developer.android.com/reference/android/app/appsearch/AppSearchResult)`<`[GetSchemaResponse](https://developer.android.com/reference/android/app/appsearch/GetSchemaResponse)`>> callback) ` Retrieves the collection of schemas most recently successfully provided to[AppSearchSession.setSchema(SetSchemaRequest, Executor, Executor, Consumer)](https://developer.android.com/reference/android/app/appsearch/AppSearchSession#setSchema(android.app.appsearch.SetSchemaRequest,%20java.util.concurrent.Executor,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.SetSchemaResponse>>))for any types belonging to the requested package and database that the caller has been granted access to. |
| ` void`                                                                                         | ` `[openBlobForRead](https://developer.android.com/reference/android/app/appsearch/EnterpriseGlobalSearchSession#openBlobForRead(java.util.Set<android.app.appsearch.AppSearchBlobHandle>,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.OpenBlobForReadResponse>>))`(`[Set](https://developer.android.com/reference/java/util/Set)`<`[AppSearchBlobHandle](https://developer.android.com/reference/android/app/appsearch/AppSearchBlobHandle)`> handles, `[Executor](https://developer.android.com/reference/java/util/concurrent/Executor)` executor, `[Consumer](https://developer.android.com/reference/java/util/function/Consumer)`<`[AppSearchResult](https://developer.android.com/reference/android/app/appsearch/AppSearchResult)`<`[OpenBlobForReadResponse](https://developer.android.com/reference/android/app/appsearch/OpenBlobForReadResponse)`>> callback) ` Opens a batch of AppSearch Blobs for reading.                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| ` `[SearchResults](https://developer.android.com/reference/android/app/appsearch/SearchResults) | ` `[search](https://developer.android.com/reference/android/app/appsearch/EnterpriseGlobalSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec))`(`[String](https://developer.android.com/reference/java/lang/String)` queryExpression, `[SearchSpec](https://developer.android.com/reference/android/app/appsearch/SearchSpec)` searchSpec) ` Retrieves documents from all AppSearch databases that the querying application has access to.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

| ### Inherited methods |
|-----------------------|---|
| From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                           | | ` void`                                                                        | ` `[finalize](https://developer.android.com/reference/java/lang/Object#finalize())`() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.                                                          | | ` final `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long,%20int))`(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](https://developer.android.com/reference/java/lang/Object#wait(long))`(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](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until it is awakened, typically by being*notified* or*interrupted*.                                                                                             | ||

## Public methods

### getByDocumentId

Added in[API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in[T Extensions 13](https://developer.android.com/sdkExtensions)  

```
public void getByDocumentId (String packageName, 
                String databaseName, 
                GetByDocumentIdRequest request, 
                Executor executor, 
                BatchResultCallback<String, GenericDocument> callback)
```

Retrieves[GenericDocument](https://developer.android.com/reference/android/app/appsearch/GenericDocument)documents, belonging to the specified package name and database name and identified by the namespace and ids in the request, from the[GlobalSearchSession](https://developer.android.com/reference/android/app/appsearch/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](https://developer.android.com/reference/android/app/appsearch/AppSearchBatchResult)object in the callback.

<br />

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ||
|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `packageName`  | `String`: the name of the package to get from This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| `databaseName` | `String`: the name of the database to get from This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `request`      | `GetByDocumentIdRequest`: a request containing a namespace and IDs to get documents for. This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `executor`     | `Executor`: Executor on which to invoke the callback. This value cannot be`null`. Callback and listener events are dispatched through this[Executor](https://developer.android.com/reference/java/util/concurrent/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()](https://developer.android.com/reference/android/content/Context#getMainExecutor()). Otherwise, provide an[Executor](https://developer.android.com/reference/java/util/concurrent/Executor)that dispatches to an appropriate thread. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `callback`     | `BatchResultCallback`: Callback to receive the pending result of performing this operation. The keys of the returned[AppSearchBatchResult](https://developer.android.com/reference/android/app/appsearch/AppSearchBatchResult)are the input IDs. The values are the returned[GenericDocument](https://developer.android.com/reference/android/app/appsearch/GenericDocument)s on success, or a failed[AppSearchResult](https://developer.android.com/reference/android/app/appsearch/AppSearchResult)otherwise. IDs that are not found will return a failed[AppSearchResult](https://developer.android.com/reference/android/app/appsearch/AppSearchResult)with a result code of[AppSearchResult.RESULT_NOT_FOUND](https://developer.android.com/reference/android/app/appsearch/AppSearchResult#RESULT_NOT_FOUND). If an unexpected internal error occurs in the AppSearch service,[BatchResultCallback.onSystemError](https://developer.android.com/reference/android/app/appsearch/BatchResultCallback#onSystemError(java.lang.Throwable))will be invoked with a[Throwable](https://developer.android.com/reference/java/lang/Throwable). This value cannot be`null`. <br /> |

### getSchema

Added in[API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in[T Extensions 13](https://developer.android.com/sdkExtensions)  

```
public void getSchema (String packageName, 
                String databaseName, 
                Executor executor, 
                Consumer<AppSearchResult<GetSchemaResponse>> callback)
```

Retrieves the collection of schemas most recently successfully provided to[AppSearchSession.setSchema(SetSchemaRequest, Executor, Executor, Consumer)](https://developer.android.com/reference/android/app/appsearch/AppSearchSession#setSchema(android.app.appsearch.SetSchemaRequest,%20java.util.concurrent.Executor,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.SetSchemaResponse>>))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.

<br />

|                                                                                                                                                                                                                                                                                                                      Parameters                                                                                                                                                                                                                                                                                                                       ||
|----------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `packageName`  | `String`: the package that owns the requested[AppSearchSchema](https://developer.android.com/reference/android/app/appsearch/AppSearchSchema)instances. This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| `databaseName` | `String`: the database that owns the requested[AppSearchSchema](https://developer.android.com/reference/android/app/appsearch/AppSearchSchema)instances. This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `executor`     | `Executor`: Executor on which to invoke the callback. This value cannot be`null`. Callback and listener events are dispatched through this[Executor](https://developer.android.com/reference/java/util/concurrent/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()](https://developer.android.com/reference/android/content/Context#getMainExecutor()). Otherwise, provide an[Executor](https://developer.android.com/reference/java/util/concurrent/Executor)that dispatches to an appropriate thread. <br /> |
| `callback`     | `Consumer`: The pending[GetSchemaResponse](https://developer.android.com/reference/android/app/appsearch/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. This value cannot be`null`. <br />                                                                                                                                                                                                                                                   |

### openBlobForRead

Added in[API level 36](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in[T Extensions 17](https://developer.android.com/sdkExtensions)  

```
public void openBlobForRead (Set<AppSearchBlobHandle> handles, 
                Executor executor, 
                Consumer<AppSearchResult<OpenBlobForReadResponse>> callback)
```

Opens a batch of AppSearch Blobs for reading.

See[AppSearchSession.openBlobForRead](https://developer.android.com/reference/android/app/appsearch/AppSearchSession#openBlobForRead(java.util.Set<android.app.appsearch.AppSearchBlobHandle>,%20java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<android.app.appsearch.OpenBlobForReadResponse>>))for a general description when a blob is for read.

The returned[OpenBlobForReadResponse](https://developer.android.com/reference/android/app/appsearch/OpenBlobForReadResponse)must be closed after use to avoid resource leaks. Failing to close it will result in system file descriptor exhaustion.

<br />

|                                                                                                                                                                                                                                                                                                                    Parameters                                                                                                                                                                                                                                                                                                                     ||
|------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `handles`  | `Set`: The[AppSearchBlobHandle](https://developer.android.com/reference/android/app/appsearch/AppSearchBlobHandle)s that identifies the blobs. This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| `executor` | `Executor`: Executor on which to invoke the callback. This value cannot be`null`. Callback and listener events are dispatched through this[Executor](https://developer.android.com/reference/java/util/concurrent/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()](https://developer.android.com/reference/android/content/Context#getMainExecutor()). Otherwise, provide an[Executor](https://developer.android.com/reference/java/util/concurrent/Executor)that dispatches to an appropriate thread. <br /> |
| `callback` | `Consumer`: Callback to receive the[OpenBlobForReadResponse](https://developer.android.com/reference/android/app/appsearch/OpenBlobForReadResponse). This value cannot be`null`. <br />                                                                                                                                                                                                                                                                                                                                                                                                                                               |

**See also:**

- [GenericDocument.Builder.setPropertyBlobHandle(String, AppSearchBlobHandle)](https://developer.android.com/reference/android/app/appsearch/GenericDocument.Builder#setPropertyBlobHandle(java.lang.String,%20android.app.appsearch.AppSearchBlobHandle[]))  

### search

Added in[API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)  
Also in[T Extensions 13](https://developer.android.com/sdkExtensions)  

```
public SearchResults search (String queryExpression, 
                SearchSpec searchSpec)
```

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

Applications can be granted access to documents by specifying[SetSchemaRequest.Builder.setSchemaTypeVisibilityForPackage(String, boolean, PackageIdentifier)](https://developer.android.com/reference/android/app/appsearch/SetSchemaRequest.Builder#setSchemaTypeVisibilityForPackage(java.lang.String,%20boolean,%20android.app.appsearch.PackageIdentifier))when building a schema.

Document access can also be granted to system UIs by specifying[SetSchemaRequest.Builder.setSchemaTypeDisplayedBySystem(String, boolean)](https://developer.android.com/reference/android/app/appsearch/SetSchemaRequest.Builder#setSchemaTypeDisplayedBySystem(java.lang.String,%20boolean))when building a schema.

See[AppSearchSession.search](https://developer.android.com/reference/android/app/appsearch/AppSearchSession#search(java.lang.String,%20android.app.appsearch.SearchSpec))for a detailed explanation on forming a query string.

This method is lightweight. The heavy work will be done in[SearchResults.getNextPage(Executor, Consumer)](https://developer.android.com/reference/android/app/appsearch/SearchResults#getNextPage(java.util.concurrent.Executor,%20java.util.function.Consumer<android.app.appsearch.AppSearchResult<java.util.List<android.app.appsearch.SearchResult>>>)).

<br />

|                                                                       Parameters                                                                        ||
|-------------------|--------------------------------------------------------------------------------------------------------------------------------------|
| `queryExpression` | `String`: query string to search. This value cannot be`null`. <br />                                                                 |
| `searchSpec`      | `SearchSpec`: spec for setting document filters, adding projection, setting term match type, etc. This value cannot be`null`. <br /> |

|                                                                                                                                Returns                                                                                                                                ||
|----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [SearchResults](https://developer.android.com/reference/android/app/appsearch/SearchResults) | a[SearchResults](https://developer.android.com/reference/android/app/appsearch/SearchResults)object for retrieved matched documents. This value cannot be`null`. <br /> |