From 87bad2d3bc08df49466bdccf0a0623c54616b0a3 Mon Sep 17 00:00:00 2001 From: furdiburd Date: Thu, 2 Apr 2026 17:21:07 +0200 Subject: [PATCH] Fix NoSuchMethodError on Android 5: replace String.codePoints() with Character.codePointAt() loop String.codePoints() requires API 24 (Android 7.0). Use a manual loop with Character.codePointAt() and Character.charCount() instead, which correctly handles all Unicode code points including surrogates, and works on all API levels including API 21 (Android 5.0). --- numbers/src/main/java/org/dicio/numbers/util/Utils.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/numbers/src/main/java/org/dicio/numbers/util/Utils.kt b/numbers/src/main/java/org/dicio/numbers/util/Utils.kt index ea80f6f..006ba93 100644 --- a/numbers/src/main/java/org/dicio/numbers/util/Utils.kt +++ b/numbers/src/main/java/org/dicio/numbers/util/Utils.kt @@ -120,7 +120,13 @@ object Utils { */ @JvmStatic fun containsCodePoint(s: String, codePoint: Int): Boolean { - return s.codePoints().anyMatch { it == codePoint } + var i = 0 + while (i < s.length) { + val cp = Character.codePointAt(s, i) + if (cp == codePoint) return true + i += Character.charCount(cp) + } + return false } /**