I'm facing this exception on Android N : java.lang.StringIndexOutOfBoundsException line : res.add(new SpannableStringBuilder(in.subSequence(lastImageSpanPosition, spanStart))); I don't know why fromHtml medthod in android N returning different value
These are my code :
ArrayList<Object> res = new ArrayList<Object>();
Spanned in;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
in = Html.fromHtml(html,Html.FROM_HTML_MODE_LEGACY);
} else {
in = Html.fromHtml(html);
}
Object[] spans = in.getSpans(0, Integer.MAX_VALUE, Object.class); // get all spans
int lastImageSpanPosition = 0; // it's end position of image span
for (int i = 0; i < spans.length; i++) { // itarete searching ImageSpan
Object span = spans[i];
if (span instanceof ImageSpan) {
int spanStart = in.getSpanStart(span); // If you;ve found one
res.add(new SpannableStringBuilder(in.subSequence(lastImageSpanPosition, spanStart))); // add all previous spans as a single Spannable object
ImageSpan imageSpan = (ImageSpan) span;
String imageUrl = imageSpan.getSource();
if (imageUrl != null && !imageUrl.startsWith("http"))
imageUrl = "http:" + imageUrl;
if (imageUrl != null) {
res.add(new ImageSpan(null, imageUrl)); // add separate span for image
}
lastImageSpanPosition = in.getSpanEnd(span);
}
}