getString("android.text") returns SpannableString 而不是 String
getString("android.text") returns SpannableString instead of String
我正在尝试使用以下方式获取通知内容:
val sender = sbn.notification.extras.getString("android.title")
val msg = sbn.notification.extras.getString("android.text")
android.title
returns想要的值,但是android.text
returnsnull
.
经过调试发现:
W/Bundle: Key android.text expected String but value was a android.text.SpannableString. The default value <null> was returned.
W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String
为什么 android.text
返回 SpannableString
?在这种情况下如何将其转换为 String
?
正在检索 SpannableString
如果您无法控制 intent extras 中的内容,您应该可以使用以下代码检索它:
val msg = sbn.notification.extras.getCharSequence("android.text").toString()
请注意 SpannableString
class 扩展了 CharSequence
。
添加附加功能
无论您在何处添加额外内容请确保您添加的不是 SpannableString,而是字符串本身!
例如,对于 editText:
var editText: EditText = ...
extras.put("android.text", editText.text) // this will put an Editable which is a Spannable and not a string
extras.put("android.text", editText.text.toString()) // this puts a string
我正在尝试使用以下方式获取通知内容:
val sender = sbn.notification.extras.getString("android.title")
val msg = sbn.notification.extras.getString("android.text")
android.title
returns想要的值,但是android.text
returnsnull
.
经过调试发现:
W/Bundle: Key android.text expected String but value was a android.text.SpannableString. The default value <null> was returned.
W/Bundle: Attempt to cast generated internal exception:
java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String
为什么 android.text
返回 SpannableString
?在这种情况下如何将其转换为 String
?
正在检索 SpannableString
如果您无法控制 intent extras 中的内容,您应该可以使用以下代码检索它:
val msg = sbn.notification.extras.getCharSequence("android.text").toString()
请注意 SpannableString
class 扩展了 CharSequence
。
添加附加功能
无论您在何处添加额外内容请确保您添加的不是 SpannableString,而是字符串本身!
例如,对于 editText:
var editText: EditText = ...
extras.put("android.text", editText.text) // this will put an Editable which is a Spannable and not a string
extras.put("android.text", editText.text.toString()) // this puts a string