From 217a514c8c9a2e6a68d1ccd89c4e7c4fddd4b4bb Mon Sep 17 00:00:00 2001 From: M66B Date: Wed, 27 Jul 2022 07:43:50 +0200 Subject: [PATCH] Prevent crash --- .../java/eu/faircode/email/FixedTextView.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/app/src/main/java/eu/faircode/email/FixedTextView.java b/app/src/main/java/eu/faircode/email/FixedTextView.java index 2db0a5680a..59053dc278 100644 --- a/app/src/main/java/eu/faircode/email/FixedTextView.java +++ b/app/src/main/java/eu/faircode/email/FixedTextView.java @@ -32,6 +32,7 @@ import android.util.AttributeSet; import android.view.ActionMode; import android.view.KeyEvent; import android.view.MotionEvent; +import android.view.accessibility.AccessibilityNodeInfo; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -444,4 +445,34 @@ public class FixedTextView extends AppCompatTextView { return false; } } + + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + try { + super.onInitializeAccessibilityNodeInfo(info); + } catch (Throwable ex) { + Log.e(ex); + /* + java.lang.IndexOutOfBoundsException: setSpan (-1 ... -1) starts before 0 + at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1331) + at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:685) + at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:677) + at android.view.accessibility.AccessibilityNodeInfo.replaceClickableSpan(AccessibilityNodeInfo.java:2926) + at android.view.accessibility.AccessibilityNodeInfo.setText(AccessibilityNodeInfo.java:2890) + at android.widget.TextView.onInitializeAccessibilityNodeInfoInternal(TextView.java:12033) + at android.view.View.onInitializeAccessibilityNodeInfo(View.java:8627) + at android.view.View.createAccessibilityNodeInfoInternal(View.java:8586) + at android.view.View.createAccessibilityNodeInfo(View.java:8571) + at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1358) + at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1381) + at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1381) + at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchDescendantsOfRealNode(AccessibilityInteractionController.java:1381) + at android.view.AccessibilityInteractionController$AccessibilityNodePrefetcher.prefetchAccessibilityNodeInfos(AccessibilityInteractionController.java:1183) + at android.view.AccessibilityInteractionController.findAccessibilityNodeInfoByAccessibilityIdUiThread(AccessibilityInteractionController.java:368) + at android.view.AccessibilityInteractionController.access$500(AccessibilityInteractionController.java:74) + at android.view.AccessibilityInteractionController$PrivateHandler.handleMessage(AccessibilityInteractionController.java:1547) + at android.os.Handler.dispatchMessage(Handler.java:106) + */ + } + } }