support library last java android android-support-library android-notifications appcompat

java - library - com android support design 28



La notificación arroja un error al usar vectores dibujables (1)

Está utilizando el paquete de soporte de dibujo vectorial. Eso está bien, pero eso solo funciona en tu aplicación. La plataforma no sabe cómo usar vectores dibujables antes del nivel de API 21, y para una Notification , la plataforma es la que representa el recurso.

Podría convertir el vector dibujable en un Canvas respaldado por un Bitmap y luego usar ese Bitmap de Bitmap en la Notification . O, puede usar la biblioteca vectorial backport en general, pero para su puñado de iconos de Notification , genere archivos PNG para ellos y utilícelos en los dispositivos más antiguos. Ponga los res/drawable-anydpi-v21/ vectoriales correspondientes en res/drawable-anydpi-v21/ , y los dispositivos más nuevos res/drawable-anydpi-v21/ vectoriales mientras que los dispositivos más antiguos recurren a los PNG.

Obtengo la siguiente excepción cuando uso un vector dibujable para configurar el pequeño icono para una notificación:

android.app.RemoteServiceException: Notificación incorrecta publicada desde el paquete com.qbes.xxx: No se pudo crear el icono: StatusBarIcon (pkg = com.qbes.xxxuser = 0 id = 0x7f020082 level = 0 visible = true num = 0)

Aquí está mi código:

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);

y mi build.gradle (solo partes relevantes):

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'' }

PD: el código funciona bien cuando uso una imagen png o jpg dibujable, pero se rompe cuando se usa un vector dibujable.

He estado buscando durante todo un día pero no pude encontrar nada que funcionara para mí. Algunas ideas.