使用vector绘图时,通知会引发错误

当我使用vector绘图设置通知的小图标时,出现以下exception:

android.app.RemoteServiceException:从包com.qbes.xxx发布的错误通知:无法创build图标:StatusBarIcon(pkg = com.qbes.xxxuser = 0 id = 0x7f020082 level = 0 visible = true num = 0)

这是我的代码:

mNotificationBuilder = new android.support.v4.app.NotificationCompat.Builder(this) .setDefaults(android.support.v4.app.NotificationCompat.DEFAULT_LIGHTS) .setSound(null) .setSmallIcon(R.drawable.logo_white) .setColor(getResources().getColor(R.color.colorPrimary)) .setCategory(android.support.v4.app.NotificationCompat.CATEGORY_PROGRESS) .setContentTitle("Trip in Progress...") .setAutoCancel(false) .setProgress(0, 0, progress) .setOngoing(true) .setPriority(android.support.v4.app.NotificationCompat.PRIORITY_MAX) .setOnlyAlertOnce(true) .setContentIntent(pendingIntent); mNotificationBuilder.setContentText(body); mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification note = mNotificationBuilder.build(); mNotificationManager.notify(Constants.NOTIFICATION_ID_Dash, note); 

和我的build.gradle (只有相关的部分):

 android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.qbes.xxx" minSdkVersion 16 targetSdkVersion 22 versionCode 720 versionName "0.7.20" vectorDrawables.useSupportLibrary = true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.support:design:23.2.1' } 

PS:当使用可绘制的png或jpg图像时,代码工作正常,但在使用vector绘制时会中断。

我一直在寻找一整天,但找不到任何为我工作的东西。 有任何想法吗。

您正在使用vector绘图支持包。 这很好,但只适用于您的应用程序。 该平台不知道如何在API级别21之前使用vector绘制,而对于Notification ,该平台是呈现资源的平台。

您可以将vector绘制到由Bitmap支持的Canvas ,然后在Notification使用该Bitmap 。 或者,通常可以使用vectorbackport库,但对于less数Notification图标,可以为它们生成PNG文件,并在较早的设备上使用它们。 将相应的vector绘图放在res/drawable-anydpi-v21/ ,较新的设备将使用vector绘图,而较老的设备则回退到PNG。