public final class AppEntity

  1. Object
  2. AppEntity

The platform-facing view of one of your app’s nouns – an order, a playlist, a saved route.

This is what an entity looks like after it has left your code. Your own class stays your own class; the build reads its EntityId / EntityTitle / EntitySubtitle / EntityImage members and generates the adapter that produces one of these. You construct AppEntity directly only when indexing content that has no annotated class behind it.

The field set is small because it is the intersection of what every platform entity display model actually has: something to identify it by, something to show, something to show underneath, a picture, and words to match a search against.

The id is a promise

Ids outlive the process. Spotlight keeps indexed items and the system keeps donated shortcuts, both of them holding your id, so an id has to mean the same thing after an app update as it did before. An id derived from a list position or a content hash will silently start resolving to the wrong object and nothing will report an error.

Constructors

public AppEntity(String type, String id)Creates an entity of a declared type.

Methods

public String getType()The entity type id.
public String getId()The stable identifier of this instance.
public String getTitle()The primary line shown by a picker or a search result.
public AppEntity setTitle(String title)Sets the primary line.
public String getSubtitle()The secondary line, or null.
public AppEntity setSubtitle(String subtitle)Sets the secondary line.
public EncodedImage getImage()The thumbnail, or null.
public AppEntity setImage(EncodedImage image)Sets the thumbnail.
public AppEntity addKeywords(String... words)Extra words a search should match this entity on, beyond its title and subtitle.
public List<String> getKeywords()The keywords added so far.
public String toString()Returns a string representation of the object.

Inherited methods

Constructor details

AppEntity

public AppEntity(String type, String id)
Creates an entity of a declared type.

Parameters

type String
the entity type id, matching an IntentEntity declaration. It may not contain :, which separates the type from the id in the identifier the platforms store.
id String
the stable identifier of this instance. Colons are fine here: the uid splits at the first one, so everything after it is the id.

Method details

getType

public String getType()
The entity type id.

getId

public String getId()
The stable identifier of this instance.

getTitle

public String getTitle()
The primary line shown by a picker or a search result.

setTitle

public AppEntity setTitle(String title)
Sets the primary line. Required for anything indexed – an entity with no title has nothing to show in a search result.

Parameters

title String
the display title

Returns

this entity, for chaining

getSubtitle

public String getSubtitle()
The secondary line, or null.

setSubtitle

public AppEntity setSubtitle(String subtitle)
Sets the secondary line.

Parameters

subtitle String
the display subtitle

Returns

this entity, for chaining

getImage

public EncodedImage getImage()
The thumbnail, or null.

setImage

public AppEntity setImage(EncodedImage image)

Sets the thumbnail.

An EncodedImage rather than an Image because the bytes cross to the platform as-is. Handing over an image that still has to be rasterized would mean encoding it here, which on a device is exactly the kind of work that looks instantaneous in the simulator and stalls on hardware.

Parameters

image EncodedImage
the thumbnail

Returns

this entity, for chaining

addKeywords

public AppEntity addKeywords(String... words)
Extra words a search should match this entity on, beyond its title and subtitle.

Parameters

words String...
the keywords to add; null is ignored

Returns

this entity, for chaining

getKeywords

public List<String> getKeywords()
The keywords added so far.

toString

public String toString()
Returns a string representation of the object. In general, the toString method returns a string that “textually represents” this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@’, and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + ‘@’ + Integer.toHexString(hashCode())