[Settings] Learn more link should be removed when not supported.

Learn more wording with link only help people when configured.
When no link available, these wording had better removed to avoid from
confusing people.

Bug: 159510116
Test: manual
Merged-In: I36b74b2b4586546090fb88562e8f4f052a877709
Change-Id: If7061e0be201b2f98964a7b0eec42cc17cb11ae3
This commit is contained in:
Bonian Chen
2020-06-23 21:15:06 +08:00
parent 7df1fb2af1
commit fed54f7dc4
3 changed files with 24 additions and 4 deletions

View File

@@ -69,7 +69,7 @@ public class NrDisabledInDsdsFooterPreferenceController extends BasePreferenceCo
if (linkInfo.isActionable()) {
return AnnotationSpan.linkify(mContext.getText(R.string.no_5g_in_dsds_text), linkInfo);
} else {
return mContext.getText(R.string.no_5g_in_dsds_text);
return AnnotationSpan.textWithoutLink(mContext.getText(R.string.no_5g_in_dsds_text));
}
}

View File

@@ -27,6 +27,9 @@ import android.text.style.URLSpan;
import android.util.Log;
import android.view.View;
import java.util.Arrays;
import java.util.Comparator;
/**
* This class is used to add {@link View.OnClickListener} for the text been wrapped by
* annotation.
@@ -75,6 +78,23 @@ public class AnnotationSpan extends URLSpan {
return builder;
}
/**
* get the text part without having text for link part
*/
public static CharSequence textWithoutLink(CharSequence encodedText) {
SpannableString msg = new SpannableString(encodedText);
Annotation[] spans = msg.getSpans(0, msg.length(), Annotation.class);
if (spans == null) {
return encodedText;
}
Arrays.sort(spans, Comparator.comparingInt(span -> -msg.getSpanStart(span)));
StringBuilder msgWithoutLink = new StringBuilder(msg.toString());
for (Annotation span : spans) {
msgWithoutLink.delete(msg.getSpanStart(span), msg.getSpanEnd(span));
}
return msgWithoutLink.toString();
}
/**
* Data class to store the annotation and the click action
*/