android - 无法读取包含 SpannableString 而不是常规字符串的通知
问题描述
情况:
我有正在阅读通知文本的代码
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 之外的其他方法来从 extras 中获取文本
- 在字符串末尾添加“”
- 检查函数是否返回带有“instanceof”的 SpannableString,然后将其转换为 SpannableString
解决方案
就我而言,挣扎了将近 3 个小时
String.valueOf(sbn.getNotification().extras.get("android.text"));
像魅力一样工作
推荐阅读
- java - REST API 和 Glassfish 中的 JSON 响应
- c# - 构建后找不到 Json 文件
- python - Python - 编写特定大小的 zip 非常不可靠
- json - 我需要帮助将有效的 JSON 文本从谷歌文档解析为谷歌 appscript 中的 JSON 对象
- php - 如何使用公钥/私钥 RSA 密钥签署一些数据?
- python - 使用pygame在python屏幕中移动对象时遇到问题
- html - 如何使用 VB6 填充网页表单
- javascript - 触发任何事件类型,无论它如何附加到元素
- html - 当存在远处的子类时,CSS 可以检测和移动 HTML 元素吗?
- javascript - 如何停止两个状态值之间的连接