Android 通知默认使用白色字体颜色(不可读)?

Android 通知默认使用白色字体颜色(不可读)?,android,notifications,notification-listener,Android,Notifications,Notification Listener,我已经实现了一个通知侦听器,它基本上复制了一个传入的gmail通知。然后我取消了gmail通知,转而显示我自己的(slighlty自定义版本,带有不同的文本/操作按钮)。这不是一个自定义的布局,我只是使用默认的通知样式 这在Android KitKat(黑暗通知背景风格)上非常有效,但在Android棒棒糖和更高版本(光明通知背景风格)上不再有效 标题文本和操作按钮看起来不错,但是通知的文本颜色现在是白色(我猜是默认的),不再可读 下面是我如何实现它的 //Create New Noti

我已经实现了一个通知侦听器,它基本上复制了一个传入的gmail通知。然后我取消了gmail通知,转而显示我自己的(slighlty自定义版本,带有不同的文本/操作按钮)。这不是一个自定义的布局,我只是使用默认的通知样式

这在Android KitKat(黑暗通知背景风格)上非常有效,但在Android棒棒糖和更高版本(光明通知背景风格)上不再有效

标题文本和操作按钮看起来不错,但是通知的文本颜色现在是白色(我猜是默认的),不再可读

下面是我如何实现它的

    //Create New Notification Copy
            Notification.Builder ncomp = new Notification.Builder(this)
                    .setLargeIcon((Bitmap) extras.getParcelable(mNotification.EXTRA_LARGE_ICON))
                    .setContentInfo("" + numunread)
                    .setSubText(extras.getCharSequence(mNotification.EXTRA_SUB_TEXT))
                    .setContentText(extras.getCharSequence(mNotification.EXTRA_TEXT))
                    .setContentTitle(extras.getCharSequence(mNotification.EXTRA_TITLE))
                    .setSmallIcon(R.drawable.gmail)
                    .setLargeIcon(sbn.getNotification().largeIcon)
                    .setAutoCancel(true)
                    .setStyle(new Notification.BigTextStyle().bigText(extras.getCharSequence(mNotification.EXTRA_SUB_TEXT)));
    Notification noti = new Notification.BigTextStyle(ncomp)
                    .bigText(extras.getCharSequence(mNotification.EXTRA_TEXT))
                    .setSummaryText(extras.getCharSequence(mNotification.EXTRA_SUB_TEXT))
                    .setBigContentTitle(extras.getCharSequence(mNotification.EXTRA_TITLE_BIG))
                    .build(); 
    nManager.notify(oldNotificationTag, notifID, noti);
下面是通知的内容

这是因为我使用的旧SDK吗?谷歌是否改变了这一做法?我不确定为什么会突然发生这种情况,因为我没有在这里创建自定义通知布局。这是我的gradle文件:

   android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"

    defaultConfig {
        minSdkVersion 19
        targetSdkVersion 19
        versionCode 5
        versionName "1.22"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.0.0'
    compile 'com.android.support:support-v4:19.0.0'
    compile 'com.google.apis:google-api-services-gmail:v1-rev10-1.19.0'
    compile files('libs/asmack-android-8-0.8.9.jar')
    compile files('libs/mail.jar')
    compile files('libs/activation.jar')
    compile files('libs/additionnal.jar')
    compile 'com.github.eluleci:flatui:0.1.2'
    compile 'de.cketti.library.changelog:ckchangelog:1.2.0'
   }

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.3'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}
根据:

针对此版本或更高版本的应用程序将在行为上获得以下新更改:

  • 不会调整其各种通知元素的颜色以更好地匹配新材质设计外观
您应该针对API 21或更高版本禁用此兼容性行为,并在API 21+设备上获取默认通知文本颜色。

请参见:

针对此版本或更高版本的应用程序将在行为上获得以下新更改:

  • 不会调整其各种通知元素的颜色以更好地匹配新材质设计外观

您应该以API 21或更高版本为目标,以禁用此兼容性行为,并在API 21+设备上获取默认通知文本颜色。

确定使用下面的推送通知代码

Intent intent = new Intent(this, HomeMainActivity.class);
int id = (int) System.currentTimeMillis();
editor.putString("KEY_APPST", appst);
editor.apply();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("activity", title3);
intent.putExtra("id", tid);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
int color = getResources().getColor(R.color.white);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
       .setSmallIcon(R.drawable.aquadeals_partner_tbgic32)
       .setContentTitle(title)
       .setSubText(title3)
       .setContentText(message)
       .setAutoCancel(true)
       .setTicker(title)
       .setDefaults(Notification.DEFAULT_LIGHTS)
      .setColor(color)
       .setStyle(new NotificationCompat.BigTextStyle().bigText(title))
       .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
       .setWhen(System.currentTimeMillis())
       .setLargeIcon(BitmapFactory.decodeResource(PushNotificationService.this.getResources(), R.drawable.appicon))
       .setSound(defaultSoundUri)
       .setContentIntent(pendingIntent);
NotificationManager notificationManager =
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(id /* ID of notification */, notificationBuilder.build());

确定使用下面的推送通知代码

Intent intent = new Intent(this, HomeMainActivity.class);
int id = (int) System.currentTimeMillis();
editor.putString("KEY_APPST", appst);
editor.apply();
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.putExtra("activity", title3);
intent.putExtra("id", tid);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
int color = getResources().getColor(R.color.white);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = (NotificationCompat.Builder) new NotificationCompat.Builder(this)
       .setSmallIcon(R.drawable.aquadeals_partner_tbgic32)
       .setContentTitle(title)
       .setSubText(title3)
       .setContentText(message)
       .setAutoCancel(true)
       .setTicker(title)
       .setDefaults(Notification.DEFAULT_LIGHTS)
      .setColor(color)
       .setStyle(new NotificationCompat.BigTextStyle().bigText(title))
       .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
       .setWhen(System.currentTimeMillis())
       .setLargeIcon(BitmapFactory.decodeResource(PushNotificationService.this.getResources(), R.drawable.appicon))
       .setSound(defaultSoundUri)
       .setContentIntent(pendingIntent);
NotificationManager notificationManager =
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(id /* ID of notification */, notificationBuilder.build());

那么,这是否意味着将编译、目标sdk版本更改为21+,其余代码保持不变?目标API 21涉及,但是的,仅升级到目标API 21而不进行其他更改就足以解决此特定问题。那么,这是否意味着将编译、目标sdk版本更改为21+,其余代码保持不变?目标API 21涉及,但是是的,仅仅升级到目标API 21而不做其他更改就足以解决这个问题。