Je voudrais intégrer le symbole emoji ???? dans mon Android. Par conséquent, j'ai recherché le code hexadécimal pour le symbole utf-8 et ajouté ce qui suit à mon fichier string.xml:
<string name="thumbsup">Perfect <node>👍👍</node></string>
Cela devrait se traduire par Perfect ????????
. Cependant, mon application se bloque à la place lorsque l'activité d'appel essaie d'afficher ceci:
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal start byte 0xf0
Pas particulièrement parfait;)
La solution pour cela est: Ajoutez "--utf16" à aapt en ajoutant
Android {
aaptOptions {
additionalParameters '--utf16'
}
}
à ton build.gradle
fichier et assurez-vous que vous n'utilisez pas aapt2.
Il semble que les nouvelles versions de Android ne provoquent pas le plantage (l'API 24 a fonctionné dans mes tests), mais cela n'aide pas si vous supportez des versions plus anciennes. Le meilleur que j'ai pu comprendre, c'est utiliser Java chaînes codées.
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";
}
Cette méthode présente plusieurs inconvénients, le principal étant qu'elle n'est pas accessible dans les fichiers XML de mise en page. Mais il peut être une solution de contournement viable pour certaines situations.