EmojiCompat
@AnyThread
class EmojiCompat
Main class to keep Android devices up to date with the newest emojis by adding EmojiSpans to a given CharSequence. It is a singleton class that can be configured using a EmojiCompat.Config instance.
init function before it can process a CharSequence.
EmojiCompat.init(/* a config instance */);
EmojiCompat.Config for more configuration parameters. Once init is called a singleton instance will be created. Any call after that will not create a new instance and will return immediately. During initialization information about emojis is loaded on a background thread. Before the EmojiCompat instance is initialized, calls to functions such as process will throw an exception. You can use the InitCallback class to be informed about the state of initialization. After initialization the get function can be used to get the configured instance and the process function can be used to update a CharSequence with emoji EmojiSpans.
CharSequence processedSequence = EmojiCompat.get().process("some string")
Summary
Nested types |
|---|
abstract class EmojiCompat.ConfigConfiguration class for EmojiCompat. |
interface EmojiCompat.GlyphCheckerInterface to check if a given emoji exists on the system. |
abstract class EmojiCompat.InitCallbackListener class for the initialization of the EmojiCompat. |
interface EmojiCompat.MetadataRepoLoaderInterface to load emoji metadata. |
abstract class EmojiCompat.MetadataRepoLoaderCallbackCallback to inform EmojiCompat about the state of the metadata load. |
Constants |
|
|---|---|
const String! |
EDITOR_INFO_METAVERSION_KEY = "android.support.text.emoji.emojiCompat_metadataVersion"Key in |
const String! |
EDITOR_INFO_REPLACE_ALL_KEY = "android.support.text.emoji.emojiCompat_replaceAll"Key in |
const Int |
EmojiCompat instance is constructed, however the initialization did not start yet. |
const Int |
An unrecoverable error occurred during initialization of EmojiCompat. |
const Int |
EmojiCompat is initializing. |
const Int |
EmojiCompat successfully initialized. |
const Int |
|
const Int |
|
const Int |
Replace strategy to add |
const Int |
Replace strategy that uses the value given in |
const Int |
Replace strategy to add |
Public functions |
|
|---|---|
java-static EmojiCompat! |
get()Return singleton EmojiCompat instance. |
String |
Returns signature for the currently loaded emoji assets. |
Int |
Returns loading state of the EmojiCompat instance. |
java-static Boolean |
handleDeleteSurroundingText(Handles deleteSurroundingText commands from |
java-static Boolean |
handleOnKeyDown(editable: Editable, keyCode: Int, event: KeyEvent!)Handles onKeyDown commands from a |
Boolean |
hasEmojiGlyph(sequence: CharSequence)Returns |
Boolean |
hasEmojiGlyph(Returns |
java-static EmojiCompat! |
init(config: EmojiCompat.Config)Initialize the singleton instance with a configuration. |
Unit |
load()When |
CharSequence! |
process(charSequence: CharSequence)Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found. |
CharSequence! |
Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found. |
CharSequence! |
process(Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found. |
CharSequence! |
process(Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found. |
Unit |
registerInitCallback(initCallback: EmojiCompat.InitCallback)Registers an initialization callback. |
Unit |
unregisterInitCallback(initCallback: EmojiCompat.InitCallback)Unregisters a callback that was added before. |
Constants
EDITOR_INFO_METAVERSION_KEY
const val EDITOR_INFO_METAVERSION_KEY = "android.support.text.emoji.emojiCompat_metadataVersion": String!
Key in extras that represents the emoji metadata version used by the widget. The existence of the value means that the widget is using EmojiCompat.
int and can be used to query EmojiCompat to see whether the widget has the ability to display a certain emoji using hasEmojiGlyph.EDITOR_INFO_REPLACE_ALL_KEY
const val EDITOR_INFO_REPLACE_ALL_KEY = "android.support.text.emoji.emojiCompat_replaceAll": String!
Key in extras that represents setReplaceAll configuration parameter. The key is added only if EmojiCompat is used by the widget. If exists, the value is a boolean.
LOAD_STATE_DEFAULT
const val LOAD_STATE_DEFAULT = 3: Int
EmojiCompat instance is constructed, however the initialization did not start yet.
| See also | |
|---|---|
getLoadState |
LOAD_STATE_FAILED
const val LOAD_STATE_FAILED = 2: Int
An unrecoverable error occurred during initialization of EmojiCompat. Calls to functions such as process will fail.
| See also | |
|---|---|
getLoadState |
LOAD_STATE_LOADING
const val LOAD_STATE_LOADING = 0: Int
EmojiCompat is initializing.
| See also | |
|---|---|
getLoadState |
LOAD_STATE_SUCCEEDED
const val LOAD_STATE_SUCCEEDED = 1: Int
EmojiCompat successfully initialized.
| See also | |
|---|---|
getLoadState |
LOAD_STRATEGY_DEFAULT
const val LOAD_STRATEGY_DEFAULT = 0: Int
EmojiCompat will start loading metadata when init is called.
| See also | |
|---|---|
setMetadataLoadStrategy |
LOAD_STRATEGY_MANUAL
const val LOAD_STRATEGY_MANUAL = 1: Int
EmojiCompat will wait for load to be called by developer in order to start loading metadata.
| See also | |
|---|---|
setMetadataLoadStrategy |
REPLACE_STRATEGY_ALL
const val REPLACE_STRATEGY_ALL = 1: Int
Replace strategy to add EmojiSpans for all emoji that were found.
| See also | |
|---|---|
process |
REPLACE_STRATEGY_DEFAULT
const val REPLACE_STRATEGY_DEFAULT = 0: Int
Replace strategy that uses the value given in EmojiCompat.Config.
| See also | |
|---|---|
process |
REPLACE_STRATEGY_NON_EXISTENT
const val REPLACE_STRATEGY_NON_EXISTENT = 2: Int
Replace strategy to add EmojiSpans only for emoji that do not exist in the system.
Public functions
get
java-static fun get(): EmojiCompat!
Return singleton EmojiCompat instance. Should be called after init is called to initialize the singleton instance.
| Returns | |
|---|---|
EmojiCompat! |
EmojiCompat instance |
| Throws | |
|---|---|
java.lang.IllegalStateException |
if called before |
getAssetSignature
fun getAssetSignature(): String
Returns signature for the currently loaded emoji assets. The signature is a SHA that is constructed using emoji assets. Can be used to detect if currently loaded asset is different then previous executions. When used on devices running API 18 or below, returns empty string.
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
getLoadState
fun getLoadState(): Int
Returns loading state of the EmojiCompat instance. When used on devices running API 18 or below always returns LOAD_STATE_SUCCEEDED.
| Returns | |
|---|---|
Int |
one of |
handleDeleteSurroundingText
java-static fun handleDeleteSurroundingText(
inputConnection: InputConnection,
editable: Editable,
beforeLength: @IntRange(from = 0) Int,
afterLength: @IntRange(from = 0) Int,
inCodePoints: Boolean
): Boolean
Handles deleteSurroundingText commands from InputConnection and tries to delete an EmojiSpan from an Editable. Returns true if an EmojiSpan is deleted.
false.
| Parameters | |
|---|---|
inputConnection: InputConnection |
InputConnection instance |
editable: Editable |
TextView.Editable instance |
beforeLength: @IntRange(from = 0) Int |
the number of characters before the cursor to be deleted |
afterLength: @IntRange(from = 0) Int |
the number of characters after the cursor to be deleted |
inCodePoints: Boolean |
|
handleOnKeyDown
java-static fun handleOnKeyDown(editable: Editable, keyCode: Int, event: KeyEvent!): Boolean
Handles onKeyDown commands from a KeyListener and if keyCode is one of KEYCODE_DEL or KEYCODE_FORWARD_DEL it tries to delete an EmojiSpan from an Editable. Returns true if an EmojiSpan is deleted with the characters it covers.
false.
hasEmojiGlyph
fun hasEmojiGlyph(sequence: CharSequence): Boolean
Returns true if EmojiCompat is capable of rendering an emoji. When used on devices running API 18 or below, always returns false.
| Parameters | |
|---|---|
sequence: CharSequence |
CharSequence representing the emoji |
| Returns | |
|---|---|
Boolean |
|
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
hasEmojiGlyph
fun hasEmojiGlyph(
sequence: CharSequence,
metadataVersion: @IntRange(from = 0) Int
): Boolean
Returns true if EmojiCompat is capable of rendering an emoji at the given metadata version. When used on devices running API 18 or below, always returns false.
| Parameters | |
|---|---|
sequence: CharSequence |
CharSequence representing the emoji |
metadataVersion: @IntRange(from = 0) Int |
the metadata version to check against, should be greater than or equal to |
| Returns | |
|---|---|
Boolean |
|
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
init
java-static fun init(config: EmojiCompat.Config): EmojiCompat!
Initialize the singleton instance with a configuration. When used on devices running API 18 or below, the singleton instance is immediately moved into LOAD_STATE_SUCCEEDED state without loading any metadata. When called for the first time, the library will create the singleton instance and any call after that will not create a new instance and return immediately.
| See also | |
|---|---|
EmojiCompat.Config |
load
fun load(): Unit
When setMetadataLoadStrategy is set to LOAD_STRATEGY_MANUAL, this function starts loading the metadata. Calling the function when setMetadataLoadStrategy is not set to LOAD_STRATEGY_MANUAL will throw an exception. The load will not start if:
- the metadata is already loaded successfully and
getLoadStateisLOAD_STATE_SUCCEEDED. - a previous load attempt is not finished yet and
getLoadStateisLOAD_STATE_LOADING.
| Throws | |
|---|---|
java.lang.IllegalStateException |
when |
process
fun process(charSequence: CharSequence): CharSequence!
Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found. When used on devices running API 18 or below, returns the given charSequence without processing it.
| Parameters | |
|---|---|
charSequence: CharSequence |
CharSequence to add the EmojiSpans |
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
| See also | |
|---|---|
process |
process
fun process(
charSequence: CharSequence,
start: @IntRange(from = 0) Int,
end: @IntRange(from = 0) Int
): CharSequence!
Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found.
- If no emojis are found,
charSequencegiven as the input is returned without any changes. i.e. charSequence is a String, and no emojis are found, the same String is returned. - If the given input is not a Spannable (such as String), and at least one emoji is found a new
android.text.Spannableinstance is returned. - If the given input is a Spannable, the same instance is returned.
charSequence without processing it.
| Parameters | |
|---|---|
charSequence: CharSequence |
CharSequence to add the EmojiSpans, cannot be |
start: @IntRange(from = 0) Int |
start index in the charSequence to look for emojis, should be greater than or equal to |
end: @IntRange(from = 0) Int |
end index in the charSequence to look for emojis, should be greater than or equal to |
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
java.lang.IllegalArgumentException |
in the following cases: |
process
fun process(
charSequence: CharSequence,
start: @IntRange(from = 0) Int,
end: @IntRange(from = 0) Int,
maxEmojiCount: @IntRange(from = 0) Int
): CharSequence!
Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found.
- If no emojis are found,
charSequencegiven as the input is returned without any changes. i.e. charSequence is a String, and no emojis are found, the same String is returned. - If the given input is not a Spannable (such as String), and at least one emoji is found a new
android.text.Spannableinstance is returned. - If the given input is a Spannable, the same instance is returned.
charSequence without processing it.
| Parameters | |
|---|---|
charSequence: CharSequence |
CharSequence to add the EmojiSpans, cannot be |
start: @IntRange(from = 0) Int |
start index in the charSequence to look for emojis, should be greater than or equal to |
end: @IntRange(from = 0) Int |
end index in the charSequence to look for emojis, should be greater than or equal to |
maxEmojiCount: @IntRange(from = 0) Int |
maximum number of emojis in the |
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
java.lang.IllegalArgumentException |
in the following cases: |
process
fun process(
charSequence: CharSequence,
start: @IntRange(from = 0) Int,
end: @IntRange(from = 0) Int,
maxEmojiCount: @IntRange(from = 0) Int,
replaceStrategy: Int
): CharSequence!
Checks a given CharSequence for emojis, and adds EmojiSpans if any emojis are found.
- If no emojis are found,
charSequencegiven as the input is returned without any changes. i.e. charSequence is a String, and no emojis are found, the same String is returned. - If the given input is not a Spannable (such as String), and at least one emoji is found a new
android.text.Spannableinstance is returned. - If the given input is a Spannable, the same instance is returned.
charSequence without processing it.
| Parameters | |
|---|---|
charSequence: CharSequence |
CharSequence to add the EmojiSpans, cannot be |
start: @IntRange(from = 0) Int |
start index in the charSequence to look for emojis, should be greater than or equal to |
end: @IntRange(from = 0) Int |
end index in the charSequence to look for emojis, should be greater than or equal to |
maxEmojiCount: @IntRange(from = 0) Int |
maximum number of emojis in the |
replaceStrategy: Int |
whether to replace all emoji with |
| Throws | |
|---|---|
java.lang.IllegalStateException |
if not initialized yet |
java.lang.IllegalArgumentException |
in the following cases: |
registerInitCallback
fun registerInitCallback(initCallback: EmojiCompat.InitCallback): Unit
Registers an initialization callback. If the initialization is already completed by the time the listener is added, the callback functions are called immediately. Callbacks are called on the main looper.
When used on devices running API 18 or below,onInitialized is called without loading any metadata. In such cases onFailed is never called.
| Parameters | |
|---|---|
initCallback: EmojiCompat.InitCallback |
the initialization callback to register, cannot be |
| See also | |
|---|---|
unregisterInitCallback |
unregisterInitCallback
fun unregisterInitCallback(initCallback: EmojiCompat.InitCallback): Unit
Unregisters a callback that was added before.
| Parameters | |
|---|---|
initCallback: EmojiCompat.InitCallback |
the callback to be removed, cannot be |