构建通知时,我会查找手机的 SDK 版本以应用正确的样式:
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
sb.setSpan(new TextAppearanceSpan(context, android.R.style.TextAppearance_Material_Notification_Title), 0, start, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new TextAppearanceSpan(context, android.R.style.TextAppearance_Material_Notification), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
} else {
sb.setSpan(new TextAppearanceSpan(context, android.R.style.TextAppearance_StatusBar_EventContent_Title), 0, start, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
sb.setSpan(new TextAppearanceSpan(context, android.R.style.TextAppearance_StatusBar_EventContent), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
我最近获悉,在华为和荣耀手机(使用 Emotion Engine)上,文本几乎无法阅读,因为默认通知背景是深色的,与 Lollipop 以来其他手机的白色背景不同。
我的问题是我应该使用什么样式来应用正确的颜色(在这种情况下为白色),或者有没有办法以编程方式确定将哪种样式应用于我的文本(例如查看状态栏背景菜单颜色)。
编辑:由于以下帖子找到了临时解决方法,其中解释了如何确定手机是否是华为/荣誉以及如何将用户重定向到“受保护的应用程序”屏幕: “受保护的应用程序”设置开启华为手机,以及如何处理它