/** * Returns a Spannable for the given message with a telephone {@link TtsSpan} set for * the given phone number text wherever it is found within the message. */ public static Spannable getTelephoneTtsSpannable(String message, String phoneNumber) { if (message == null) { return null; } final Spannable spannable = new SpannableString(message); int start = phoneNumber == null ? -1 : message.indexOf(phoneNumber); while (start >= 0) { final int end = start + phoneNumber.length(); final TtsSpan ttsSpan = PhoneNumberUtilsCompat.createTtsSpan(phoneNumber); spannable.setSpan(ttsSpan, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); // this is consistenly done in a misleading way.. start = message.indexOf(phoneNumber, end); } return spannable; }
/** * Copied from {@link PhoneNumberUtils#addTtsSpan} */ private static void addTtsSpanInternal(Spannable s, int start, int endExclusive) { s.setSpan(createTtsSpan(s.subSequence(start, endExclusive).toString()), start, endExclusive, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); }