From 78928498cb20a929bb95042c8b265037262c61aa Mon Sep 17 00:00:00 2001 From: Andrey Epin Date: Mon, 28 Aug 2023 19:15:06 -0700 Subject: Display rich text in text preview Show rich text and title in Text preview and Image + Text preview UI. Fix: 297493142 Test: intgration tests Test: manual testing using ShareTest app checking that Texp preview UI shows rich text in title (Intent.EXTRA_TITLE) and in text (Intent.EXTRA_TEXT) Test: manual testing checkin that Iamge + Text preview UI displays rich text. Change-Id: I681716c21b8940f3dc367273a104f8cc216b7206 --- .../contentpreview/ChooserContentPreviewUi.java | 2 +- .../contentpreview/TextContentPreviewUi.java | 23 ++++++++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) (limited to 'java/src/com') diff --git a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java index d279f11f..b7650b9d 100644 --- a/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/ChooserContentPreviewUi.java @@ -200,7 +200,7 @@ public final class ChooserContentPreviewUi { ImageLoader imageLoader, HeadlineGenerator headlineGenerator) { CharSequence sharingText = targetIntent.getCharSequenceExtra(Intent.EXTRA_TEXT); - String previewTitle = targetIntent.getStringExtra(Intent.EXTRA_TITLE); + CharSequence previewTitle = targetIntent.getCharSequenceExtra(Intent.EXTRA_TITLE); ClipData previewData = targetIntent.getClipData(); Uri previewThumbnail = null; if (previewData != null) { diff --git a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java index c38ed03a..b383fbcf 100644 --- a/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/TextContentPreviewUi.java @@ -20,6 +20,7 @@ import static com.android.intentresolver.util.UriFilters.isOwnedByCurrentUser; import android.content.res.Resources; import android.net.Uri; +import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; @@ -93,13 +94,9 @@ class TextContentPreviewUi extends ContentPreviewUi { TextView textView = contentPreviewLayout.findViewById( com.android.internal.R.id.content_preview_text); - String text = mSharingText.toString(); - // If we're only previewing one line, then strip out newlines. - if (textView.getMaxLines() == 1) { - text = text.replace("\n", " "); - } - textView.setText(text); + textView.setText( + textView.getMaxLines() == 1 ? replaceLineBreaks(mSharingText) : mSharingText); TextView previewTitleView = contentPreviewLayout.findViewById( com.android.internal.R.id.content_preview_title); @@ -135,4 +132,18 @@ class TextContentPreviewUi extends ContentPreviewUi { return contentPreviewLayout; } + + @Nullable + private static CharSequence replaceLineBreaks(@Nullable CharSequence text) { + if (text == null) { + return null; + } + SpannableStringBuilder string = new SpannableStringBuilder(text); + for (int i = 0, size = string.length(); i < size; i++) { + if (string.charAt(i) == '\n') { + string.replace(i, i + 1, " "); + } + } + return string; + } } -- cgit v1.2.3-59-g8ed1b