In einem vorherigen Post hatte ich Ihnen berichtet, dass Min Time nun Benachrichtigungen zum zeitlichen Verlauf eines Talks ausgibt, und dass diese auch auf Android Wear-Geräten erscheinen. Letzteres ist grundsätzlich unspektakulär, weil es – eigentlich – von Haus aus geschieht. Natürlich wäre dies nicht bloggenswert, wenn es nicht ein entscheidendes Caveat gäbe. Hierzu ein Beispiel:

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(  
  context).setPriority(NotificationCompat.PRIORITY_HIGH)  
  .setContentTitle(context.getString(R.string.app_name))  
  .setContentText(str)  
  .setOngoing(true)  
  .setWhen(resumed)  
  .setSmallIcon(R.drawable.ic_launcher_mintime)  
  .setContentIntent(notificationClickedIntent);  
NotificationManagerCompat notificationManager = NotificationManagerCompat  
  .from(context);  
notificationManager.notify(CountdownActivity.NOTIFICATION_ID,  
  notificationBuilder.build());  

Fällt Ihnen an diesem Stück Quelltext irgendetwas auf? Wer Android kennt, wundert sich vielleicht, dass nicht mehr der Builder aus der Android-Standardbibliothek verwendet wird. sondern NotificationCompat.Builder. Das ist Absicht. Tatsächlich fordert Google in der Dokumentation ausdrücklich dazu auf. Im Klartext bedeutet dies, dass man die Bibliothek android-support-v4.jar einbinden muss. Obiger Code erzeugt tatsächlich eine Benachrichtigung; dummerweise erscheint die aber nicht auf einem Wearable.

Das Problem: setOngoing()

Sobald Sie aus meinem Quelltextfragment den Aufruf entfernen, erscheint die Benachrichtigung wie erwartet auf der Uhr. AUTSCH Die Nutzung des Kompatibilitätspakets verläuft zum Glück schmerzfrei. Dass die Größe der App zunimmt (von 0,11 MB auf 0,37 MB im Falle von Min Time) ist unschön, aber vor dem Hintergrund aktueller Bandbreiten sicher zu verschmerzen. Übrigens hatte die Integration des Jars eine Zeitlang den Effekt, dass eine App angeblich für viele (> 30) Sprachen lokalisiert war, obwohl es in der eigentlichen Anwendung gar keine Vorkehrungen hierfür gab (wohl aber im Jar). Das scheint aber behoben worden zu sein.


This is a (slightly updated) repost of a piece I published on my blog Tommi’s Blog. I deleted the blog in the wake of the GDPR, so the original version is no longer available, or only through the WayBack Machine of the Internet Archive. Please note: code usually has not been updated, so language feature reflect the time the original post was written.