通知を作成するときは、電話の 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);
}
Lollipop 以降の他の電話の白い背景とは異なり、デフォルトの通知の背景が暗いため、Huawei と Honor の電話 (Emotion Engine を使用している) ではテキストがほとんど読めないことが最近知らされました。
私の質問は、正しい色 (この場合は白) を適用するためにどのスタイルを使用する必要があるか、またはテキストに適用するスタイルをプログラムで決定する方法 (たとえば、ステータス バーの背景メニューの色を見るなど) です。
編集:次の投稿のおかげで一時的な回避策が見つかりました。この投稿では、電話がHuawei / Honorであるかどうかを判断する方法と、ユーザーを「保護されたアプリ」画面にリダイレクトする方法が説明されています: 「保護されたアプリ」の設定Huaweiの携帯電話とその取り扱い方法