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.