无法读取包含 SpannableString 而不是常规字符串的通知
Cannot read notification which contains SpannableString instead of regular String
情况:
我有读取通知文本的代码
String notificationText = sbn.getNotification().extras.getString("android.text");
读取带有特殊字符的通知时会导致以下错误:
Key android.text expected String but value was a android.text.SpannableString.
The default value <null> was returned.
java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String
导致此错误的特定文本是来自 com.whatsapp 的通知,文本为:“粗体文本 常规文本”
请注意,某些字符以粗体显示。 (没有粗体就不会抛出异常)。
问题:
有什么方法可以让我将这段文本作为字符串获取吗?
我已经试过了:
- 正在将其转换为字符串。
- 正在寻找除 getString 以外的其他方法来获取文本
来自临时演员
- 在字符串末尾添加一个“”
- 检查函数是否返回一个 SpannableString
'instanceof',然后将其转换为 SpannableString
以我为例,挣扎了将近 3 个小时
String.valueOf(sbn.getNotification().extras.get("android.text"));
工作得很好
sbn.notification.extras.get(Notification.EXTRA_TEXT)**.toString()**
这将有效 100%
情况:
我有读取通知文本的代码
String notificationText = sbn.getNotification().extras.getString("android.text");
读取带有特殊字符的通知时会导致以下错误:
Key android.text expected String but value was a android.text.SpannableString.
The default value <null> was returned.
java.lang.ClassCastException: android.text.SpannableString cannot be cast to java.lang.String
导致此错误的特定文本是来自 com.whatsapp 的通知,文本为:“粗体文本 常规文本”
请注意,某些字符以粗体显示。 (没有粗体就不会抛出异常)。
问题:
有什么方法可以让我将这段文本作为字符串获取吗?
我已经试过了:
- 正在将其转换为字符串。
- 正在寻找除 getString 以外的其他方法来获取文本 来自临时演员
- 在字符串末尾添加一个“”
- 检查函数是否返回一个 SpannableString 'instanceof',然后将其转换为 SpannableString
以我为例,挣扎了将近 3 个小时
String.valueOf(sbn.getNotification().extras.get("android.text"));
工作得很好
sbn.notification.extras.get(Notification.EXTRA_TEXT)**.toString()**
这将有效 100%