Notificación genera error al utilizar elementos vectoriales
Tengo la siguiente excepción cuando uso un vector dibujable para establecer el icono pequeño para una notificación:
android.app.RemoteServiceException: Notificación incorrecta enviada 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)
- ¿Cómo puedo reproducir un archivo cif encriptado con ExoPlayer?
- Tres preguntas sobre hacer un montón de cálculos
- Implementación correcta de PagerAdapter en Android
- Cómo persistir el miembro estático en las preferencias compartidas cuando está a punto de ser recogido en Android
- GridView dentro de ExpandableListView con múltiples opciones en Android
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
(sólo 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' }
PS: El código funciona bien cuando uso una imagen png o jpg dibujable, pero se rompe al utilizar un vector dibujable.
He estado buscando un día entero pero no pude encontrar nada que funcionara para mí. Algunas ideas.
- Android incompatibles tipos de estudio necesarios java.lang.String encontrado java.lang.String
- Render un byte como mapa de bits en Android
- Cambiar la apariencia del texto en estilos y temas para una aplicación de Android
- ¿Cómo configurar el elemento seleccionado de Spinner por valor, no por posición?
- Cómo borrar y configurar la aplicación de inicio predeterminada
- Horizontal progressbar agregar indicadores de círculo
- Mantener la clave secreta SECRET - dentro de la aplicación para Android .. cualquier idea
- Android: implementación de ViewHolder
Está utilizando el paquete de soporte de dibujo vectorial. Eso está bien, pero eso sólo funciona en tu aplicación. La plataforma no sabe cómo utilizar el vector drawables antes de API nivel 21 y para una Notification
, la plataforma es la que representa el recurso.
Usted podría hacer el vector dibujable usted mismo a un Canvas
apoyado por un Bitmap
, después utilizar ese Bitmap
de Bitmap
en la Notification
. O bien, puede utilizar la biblioteca de backport vector en general, pero para su puñado de iconos de Notification
, genere archivos PNG para ellos y utilizarlos en los dispositivos más antiguos. Ponga el vector correspondiente drawables en res/drawable-anydpi-v21/
, y los dispositivos más nuevos utilizarán el vector drawables mientras que los dispositivos más viejos vuelven a los PNGs.