diff options
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/text/TextUtils.java | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/core/java/android/text/TextUtils.java b/core/java/android/text/TextUtils.java index 2ab9bf8..e2035c2 100644 --- a/core/java/android/text/TextUtils.java +++ b/core/java/android/text/TextUtils.java @@ -44,6 +44,7 @@ import android.text.style.TextAppearanceSpan; import android.text.style.TypefaceSpan; import android.text.style.URLSpan; import android.text.style.UnderlineSpan; +import android.util.Log; import android.util.Printer; import android.view.View; @@ -57,6 +58,8 @@ import java.util.Locale; import java.util.regex.Pattern; public class TextUtils { + private static final String TAG = "TextUtils"; + private TextUtils() { /* cannot be instantiated */ } @@ -550,6 +553,8 @@ public class TextUtils { /** @hide */ public static final int ALIGNMENT_SPAN = 1; /** @hide */ + public static final int FIRST_SPAN = ALIGNMENT_SPAN; + /** @hide */ public static final int FOREGROUND_COLOR_SPAN = 2; /** @hide */ public static final int RELATIVE_SIZE_SPAN = 3; @@ -593,6 +598,8 @@ public class TextUtils { public static final int EASY_EDIT_SPAN = 22; /** @hide */ public static final int LOCALE_SPAN = 23; + /** @hide */ + public static final int LAST_SPAN = LOCALE_SPAN; /** * Flatten a CharSequence and whatever styles can be copied across processes @@ -622,9 +629,16 @@ public class TextUtils { if (prop instanceof ParcelableSpan) { ParcelableSpan ps = (ParcelableSpan)prop; - p.writeInt(ps.getSpanTypeId()); - ps.writeToParcel(p, parcelableFlags); - writeWhere(p, sp, o); + int spanTypeId = ps.getSpanTypeId(); + if (spanTypeId < FIRST_SPAN || spanTypeId > LAST_SPAN) { + Log.e(TAG, "external class \"" + ps.getClass().getSimpleName() + + "\" is attempting to use the frameworks-only ParcelableSpan" + + " interface"); + } else { + p.writeInt(spanTypeId); + ps.writeToParcel(p, parcelableFlags); + writeWhere(p, sp, o); + } } } |