회사의 레거시 서버의 탓에 EditText 로 전달 받는 값 중 이모지를 입력하면 안된다는 항목이 존재해서 이를 위해 자료를 찾고 있었는데
EditText 자체에 입력이 아에 안되게 하는 방법 그리고 입력 된 후 String 에 이모지가 담겨 있는지 확인하는 방법 이렇게 2가지 형태로
체크 할 수 있었다. 우선은 둘다 적용해보기로 하고 아래와 같이 Extension 을 만들어냈다.
EditText 에 이모지가 입력 안되게 하는 방법
fun EditText.blockingEmoji() {
filters = arrayOf(object: InputFilter {
override fun filter(
source: CharSequence?,
start: Int,
end: Int,
dest: Spanned?,
dstart: Int,
dend: Int
): CharSequence? {
for (index in start until end) {
source?.get(index)?.let {
val type: Int = Character.getType(it)
if (type == Character.SURROGATE.toInt() ||
type == Character.NON_SPACING_MARK.toInt() ||
type == Character.OTHER_SYMBOL.toInt()) {
return ""
}
}
}
return null
}
})
}
String 에 이모지를 확인하는 방법
fun String?.containsEmoji(): Boolean {
if (this.isNullOrEmpty()) {
return false
}
return EmojiManager.containsEmoji(this)
}
여기서 EmojiManager 는 아래의 라이브러리를 이용했다.
// Emoji - https://github.com/vdurmont/emoji-java
implementation 'com.vdurmont:emoji-java:5.1.1'
참조
https://stackoverflow.com/questions/24840667/what-is-the-regex-to-extract-all-the-emojis-from-a-string
'Android' 카테고리의 다른 글
AOS Border fade-in/fade-out (0) | 2021.06.30 |
---|---|
Dagger Hilt (0) | 2020.07.03 |
AppUpdateManager (0) | 2020.01.29 |
SameSite=Lax (0) | 2020.01.29 |
SameSite=Lax (0) | 2020.01.29 |