support - unicode emoji android
El símbolo Emoji string en string.xml bloquea la aplicación (2)
La solución para eso es: Agregar "--utf16" a aapt agregando
android {
aaptOptions {
additionalParameters ''--utf16''
}
}
a su archivo build.gradle
, y asegúrese de no estar usando aapt2.
Me gustaría integrar el símbolo emoji 👍 en mi aplicación de Android. Por lo tanto, busqué el código hexadecimal del símbolo utf-8 y agregué lo siguiente a mi archivo string.xml:
<string name="thumbsup">Perfect <node>👍👍</node></string>
Esto debería resultar en Perfect 👍👍
. Sin embargo, en su lugar, mi aplicación se bloquea cuando la actividad de llamada intenta mostrar esto:
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
No particularmente perfecto;)
Parece que las versiones más recientes de Android no causan el bloqueo (API 24 funcionó en mis pruebas), pero eso no ayuda si está soportando versiones anteriores. Lo mejor que he podido averiguar es usar cadenas codificadas de Java.
public class AppEmojiStrings {
// This is only a workaround for emoji causing crashes in XML strings.
// Use the standard strings.xml for all other strings.
public static final String thumbsUp = "Thumbs up 👍";
public static final String iLoveNY = "I /uD83D/uDC99 NY";
}
Hay varias desventajas con este método, la principal es que no se puede acceder a él en los archivos XML de diseño. Pero puede ser una solución viable para algunas situaciones.