Android crash when rendering HTML in Zendesk Messaging: AbstractMethodError for android.text.Html$TagHandler.handleTag(...) | Community
Skip to main content

Android crash when rendering HTML in Zendesk Messaging: AbstractMethodError for android.text.Html$TagHandler.handleTag(...)

  • September 23, 2025
  • 3 replies
  • 0 views

Wolong

We are seeing a crash in the Zendesk Messaging Android SDK when the conversation screen renders HTML content. The app throws java.lang.AbstractMethodError referencing android.text.Html$TagHandler.handleTag(boolean, java.lang.String, android.text.Editable, org.xml.sax.XMLReader) during HTML to Spanned conversion.

 

 

Zendesk Messaging (Android) SDK version:zendesk.messaging:messaging-android:2.34.0

 

Crash Detail:

          Fatal Exception: java.lang.AbstractMethodError: abstract method "void android.text.Html$TagHandler.handleTag(boolean, java.lang.String, android.text.Editable, org.xml.sax.XMLReader)"
      at android.text.HtmlToSpannedConverter.handleStartTag(Html.java:842)
      at android.text.HtmlToSpannedConverter.startElement(Html.java:1243)
      at org.ccil.cowan.tagsoup.Parser.push(Parser.java:795)
      at org.ccil.cowan.tagsoup.Parser.rectify(Parser.java:1062)
      at org.ccil.cowan.tagsoup.Parser.pcdata(Parser.java:994)
      at org.ccil.cowan.tagsoup.HTMLScanner.scan(HTMLScanner.java:581)
      at org.ccil.cowan.tagsoup.Parser.parse(Parser.java:450)
      at android.text.HtmlToSpannedConverter.convert(Html.java:751)
      at android.text.Html.fromHtml(Html.java:246)
      at androidx.core.text.HtmlCompat$Api24Impl.fromHtml(HtmlCompat.java:195)
      at androidx.core.text.HtmlCompat.fromHtml(HtmlCompat.java:162)
      at zendesk.core.ui.android.internal.xml.RichTextHtmlExtensionsKt.toHtmlFormatted(RichTextHtmlExtensions.kt:34)
      at zendesk.ui.android.conversation.textcell.TextCellView.setupHtmlTextSpan(TextCellView.kt:162)
      at zendesk.ui.android.conversation.textcell.TextCellView.render(TextCellView.kt:122)
      at zendesk.messaging.android.internal.conversationscreen.delegates.TextMessageContainerAdapterDelegate$ViewHolder.createTextCell(TextMessageContainerAdapterDelegate.kt:335)
      at zendesk.messaging.android.internal.conversationscreen.delegates.TextMessageContainerAdapterDelegate$ViewHolder.renderContent(TextMessageContainerAdapterDelegate.kt:202)
      at zendesk.messaging.android.internal.conversationscreen.delegates.TextMessageContainerAdapterDelegate$ViewHolder.bind(TextMessageContainerAdapterDelegate.kt:151)
      at zendesk.messaging.android.internal.conversationscreen.delegates.TextMessageContainerAdapterDelegate.onBindViewHolder(TextMessageContainerAdapterDelegate.kt:86)
      at zendesk.messaging.android.internal.conversationscreen.delegates.TextMessageContainerAdapterDelegate.onBindViewHolder(TextMessageContainerAdapterDelegate.kt:61)
      at zendesk.messaging.android.internal.adapterdelegate.ListItemAdapterDelegate.onBindViewHolder(ListItemAdapterDelegate.kt:49)
      at zendesk.messaging.android.internal.adapterdelegate.ListItemAdapterDelegate.onBindViewHolder(ListItemAdapterDelegate.kt:35)
      at zendesk.messaging.android.internal.adapterdelegate.AdapterDelegatesManager.onBindViewHolder(AdapterDelegatesManager.kt:121)
      at zendesk.messaging.android.internal.adapterdelegate.AsyncListDifferDelegationAdapter.onBindViewHolder(AsyncListDifferDelegationAdapter.kt:50)
      at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7847)
      at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6646)
      at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6917)
      at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6757)
      at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6753)
      at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2362)
      at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1662)
      at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1622)
      at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:697)
      at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4645)
      at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:4022)
      at android.view.View.measure(View.java:29591)
      at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:861)
      at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:491)
      at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:140)
      at androidx.constraintlayout.core.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:285)
      at androidx.constraintlayout.core.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:119)
      at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1634)
      at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1777)
      at android.view.View.measure(View.java:29591)
      at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:749)
      at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:495)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7383)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7383)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
      at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:141)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7383)
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1608)
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:878)
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7383)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7383)
      at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1608)
      at android.widget.LinearLayout.measureVertical(LinearLayout.java:878)
      at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:7383)
      at android.widget.FrameLayout.onMeasure(FrameLayout.java:207)
      at com.android.internal.policy.DecorView.onMeasure(DecorView.java:1037)
      at android.view.View.measure(View.java:29591)
      at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:5824)
      at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:4043)
      at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4402)
      at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3708)
      at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:12542)
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1751)
      at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1760)
      at android.view.Choreographer.doCallbacks(Choreographer.java:1216)
      at android.view.Choreographer.doFrame(Choreographer.java:1142)
      at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1707)
      at android.os.Handler.handleCallback(Handler.java:959)
      at android.os.Handler.dispatchMessage(Handler.java:100)
      at android.os.Looper.loopOnce(Looper.java:257)
      at android.os.Looper.loop(Looper.java:342)
      at android.app.ActivityThread.main(ActivityThread.java:9634)
      at java.lang.reflect.Method.invoke(Method.java)
      at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:619)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:929)
       
 

 

3 replies

Wolong
  • Author
  • September 25, 2025

Any update?


  • September 25, 2025

This kind of crash usually comes from a mismatch in how TagHandler is implemented. double-check that your override matches the android api signature exactly, and make sure all your support libraries are on the same version. updating or aligning those dependencies normally clears it up.

 


  • September 27, 2025

I’m getting the same crash too on Android when the chat tries to load messages with HTML. Mine also says AbstractMethodError with handleTag. I don’t really know how to fix it, but maybe it’s something with the SDK version. Did anyone try a newer release or found a workaround?