GetSchemaResponse.Builder


public final class GetSchemaResponse.Builder


Builder for GetSchemaResponse objects.

Summary

Public constructors

Creates a new Builder

Builder(@NonNull GetSchemaResponse getSchemaResponse)

Creates a new Builder from the given GetSchemaResponse.

Public methods

@NonNull GetSchemaResponse.Builder

Adds one AppSearchSchema to the schema list.

@NonNull GetSchemaResponse.Builder

Sets whether or not documents from the provided schemaType will be displayed and visible on any system UI surface.

@NonNull GetSchemaResponse

Builds a GetSchemaResponse object.

@NonNull GetSchemaResponse.Builder

Clears the visibility settings configured through addSchemaTypeNotDisplayedBySystem, setSchemaTypeVisibleToPackages, setRequiredPermissionsForSchemaTypeVisibility, setPubliclyVisibleSchema, and setSchemaTypeVisibleToConfigs for the given schemaType.

@NonNull GetSchemaResponse.Builder

Clears the visibility settings configured through addSchemaTypeNotDisplayedBySystem, setSchemaTypeVisibleToPackages, setRequiredPermissionsForSchemaTypeVisibility, setPubliclyVisibleSchema, and setSchemaTypeVisibleToConfigs for all schema types.

@NonNull GetSchemaResponse.Builder

Clears all AppSearchSchemas from the list of schemas.

@NonNull GetSchemaResponse.Builder
setPubliclyVisibleSchema(
    @NonNull String schemaType,
    @NonNull PackageIdentifier packageIdentifier
)

Specify that the schema should be publicly available, to packages which already have visibility to packageIdentifier.

@NonNull GetSchemaResponse.Builder
setRequiredPermissionsForSchemaTypeVisibility(
    @NonNull String schemaType,
    @NonNull Set<Set<Integer>> visibleToPermissionSets
)

Sets a set of required android.Manifest.permission combinations to the given schema type.

@NonNull GetSchemaResponse.Builder
setSchemaTypeVisibleToConfigs(
    @NonNull String schemaType,
    @NonNull Set<SchemaVisibilityConfig> visibleToConfigs
)

Sets the documents from the provided schemaType can be read by the caller if they match the ALL visibility requirements set in SchemaVisibilityConfig.

@NonNull GetSchemaResponse.Builder
setSchemaTypeVisibleToPackages(
    @NonNull String schemaType,
    @NonNull Set<PackageIdentifier> packageIdentifiers
)

Sets whether or not documents from the provided schemaType can be read by the specified package.

@NonNull GetSchemaResponse.Builder
setVersion(@IntRange(from = 0) int version)

Sets the database overall schema version.

@NonNull GetSchemaResponse.Builder
setVisibilitySettingSupported(boolean visibilitySettingSupported)

Method to set visibility setting.

Public constructors

Builder

Added in 1.1.0-alpha06
public Builder()

Creates a new Builder

Builder

Added in 1.1.0-alpha06
public Builder(@NonNull GetSchemaResponse getSchemaResponse)

Creates a new Builder from the given GetSchemaResponse.

Public methods

addSchema

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder addSchema(@NonNull AppSearchSchema schema)

Adds one AppSearchSchema to the schema list.

addSchemaTypeNotDisplayedBySystem

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder addSchemaTypeNotDisplayedBySystem(@NonNull String schemaType)

Sets whether or not documents from the provided schemaType will be displayed and visible on any system UI surface.

Parameters
@NonNull String schemaType

The name of an AppSearchSchema within the same GetSchemaResponse, which won't be displayed by system.

build

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse build()

Builds a GetSchemaResponse object.

clearSchemas

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder clearSchemas()

Clears all AppSearchSchemas from the list of schemas.

setPubliclyVisibleSchema

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder setPubliclyVisibleSchema(
    @NonNull String schemaType,
    @NonNull PackageIdentifier packageIdentifier
)

Specify that the schema should be publicly available, to packages which already have visibility to packageIdentifier.

Parameters
@NonNull String schemaType

the schema to make publicly accessible.

@NonNull PackageIdentifier packageIdentifier

the package from which the document schema is from.

setRequiredPermissionsForSchemaTypeVisibility

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder setRequiredPermissionsForSchemaTypeVisibility(
    @NonNull String schemaType,
    @NonNull Set<Set<Integer>> visibleToPermissionSets
)

Sets a set of required android.Manifest.permission combinations to the given schema type.

The querier could read the GenericDocument objects under the schemaType if they holds ALL required permissions of ANY of the individual value sets.

For example, if the Map contains {{permissionA, PermissionB}, {PermissionC, PermissionD}, {PermissionE}}.

  • A querier holds both PermissionA and PermissionB has access.
  • A querier holds both PermissionC and PermissionD has access.
  • A querier holds only PermissionE has access.
  • A querier holds both PermissionA and PermissionE has access.
  • A querier holds only PermissionA doesn't have access.
  • A querier holds both PermissionA and PermissionC doesn't have access.
Parameters
@NonNull String schemaType

The schema type to set visibility on.

@NonNull Set<Set<Integer>> visibleToPermissionSets

The Sets of Android permissions that will be required to access the given schema.

setSchemaTypeVisibleToConfigs

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder setSchemaTypeVisibleToConfigs(
    @NonNull String schemaType,
    @NonNull Set<SchemaVisibilityConfig> visibleToConfigs
)

Sets the documents from the provided schemaType can be read by the caller if they match the ALL visibility requirements set in SchemaVisibilityConfig.

The requirements in a SchemaVisibilityConfig is "AND" relationship. A caller must match ALL requirements to access the schema. For example, a caller must hold required permissions AND it is a specified package.

The querier could have access if they match ALL requirements in ANY of the given SchemaVisibilityConfigs

For example, if the Set contains {{PackageA and Permission1}, {PackageB and Permission2}}.

  • A querier from packageA could read if they holds Permission1.
  • A querier from packageA could NOT read if they only holds Permission2 instead of Permission1.
  • A querier from packageB could read if they holds Permission2.
  • A querier from packageC could never read.
  • A querier holds both PermissionA and PermissionE has access.
Parameters
@NonNull String schemaType

The schema type to set visibility on.

@NonNull Set<SchemaVisibilityConfig> visibleToConfigs

The SchemaVisibilityConfigs hold all requirements that a call must to match to access the schema.

setSchemaTypeVisibleToPackages

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder setSchemaTypeVisibleToPackages(
    @NonNull String schemaType,
    @NonNull Set<PackageIdentifier> packageIdentifiers
)

Sets whether or not documents from the provided schemaType can be read by the specified package.

Each package is represented by a PackageIdentifier, containing a package name and a byte array of type CERT_INPUT_SHA256.

To opt into one-way data sharing with another application, the developer will need to explicitly grant the other application’s package name and certificate Read access to its data.

For two-way data sharing, both applications need to explicitly grant Read access to one another.

Parameters
@NonNull String schemaType

The schema type to set visibility on.

@NonNull Set<PackageIdentifier> packageIdentifiers

Represents the package that has access to the given schema type.

setVersion

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder setVersion(@IntRange(from = 0) int version)

Sets the database overall schema version.

Default version is 0

setVisibilitySettingSupported

Added in 1.1.0-alpha06
public @NonNull GetSchemaResponse.Builder setVisibilitySettingSupported(boolean visibilitySettingSupported)

Method to set visibility setting. If this is called with false, getRequiredPermissionsForSchemaTypeVisibility, getSchemaTypesNotDisplayedBySystem}, and getSchemaTypesVisibleToPackages calls will throw an UnsupportedOperationException. If called with true, visibility information for all schemas will be cleared.

Parameters
boolean visibilitySettingSupported

whether supported ADD_PERMISSIONS_AND_GET_VISIBILITY by this backend/Android API level.