我需要设置通知的颜色。如果minSdk至少为API Level 21
,则工作正常。一旦我删除了minSdk,代码(下面)就不会编译了。
notification = builder.setContentTitle(MyApp.getAppContext().getResources().getString(R.string.notification_content_title))
.setContentText(contentText)
.setColor(color)
.build();
一旦我将MinSdk降级为API Level 19
:,我就会收到以下错误消息
调用需要API 21级(当前最小值为19):android.app.Notification.Builder#setColor
解决方法是什么?我遇到NotificationCompact,我应该切换到它吗?
我建议使用NotificationCompat.Builder
(来自支持库)而不是Notification.Builder
。
要做到这一点,您将需要在您的项目中支持v4库。如果您还没有,请将这一行添加到build.gradle
文件的依赖项闭包中:
compile "com.android.support:support-v4:23.1.1"
然后您将使用NotificationCompat.Builder
进行通知。
String title = MyApp.getAppContext().getResources()
.getString(R.string.notification_content_title);
Notification notification = new NotificationCompat.Builder(context)
.setContentTitle(title)
.setContentText(contentText)
.setColor(color)
.build();
请注意,NotificationCompat.Builder
不能将所有功能备份到旧版本的android中。大部分(比如通知的颜色)在旧版本的android中会被忽略。NotificationCompat.Builder
只会防止您看到的错误。
或者,您可以在设置颜色之前添加SDK检查,但这将是一种更详细的方法来完成NotificationCompat.Builder
为您所做的事情:
String title = MyApp.getAppContext().getResources().getString(R.string.notification_content_title);
Notification.Builder builder = new Notification.Builder(context)
.setContentTitle(title)
.setContentText(contentText);
if (Build.VERSION.SDK_INT >= ApiHelper.VERSION_CODES.LOLLIPOP) {
builder.setColor(color);
}
Notification notification = builder.build();