Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

On Android 8.1 API 27 notification does not display

I get Toast on Android 8.1 API 27:

Developer warning for package "my_package_name"
Failed to post notification on ...

Logcat includes next strings:

Notification: Use of stream types is deprecated for operations other than volume control

W/Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case

E/NotificationService: No Channel found for pkg=my_package_name

The full information in the Toast and in Logcat can help in the localization this problem.

like image 237
Andy Sander Avatar asked Oct 28 '17 14:10

Andy Sander


People also ask

Why are my notifications not showing up on Android studio?

Cause of Notifications Not Showing up on Android Do Not Disturb or Airplane Mode is on. Either system or app notifications are disabled. Power or data settings are preventing apps from retrieving notification alerts. Outdated apps or OS software can cause apps to freeze or crash and not deliver notifications.

How do I trigger push notifications on Android?

Turn on notifications for Android devices Tap More on the bottom navigation bar and select Settings. Tap Turn on notifications. Tap Notifications. Tap Show notifications.


1 Answers

If you get this error should be paid attention to 2 items and them order:

  1. NotificationChannel mChannel = new NotificationChannel(id, name, importance);
  2. builder = new NotificationCompat.Builder(context, id);

Also NotificationManager notifManager and NotificationChannel mChannel are created only once.

There are required setters for Notification:

  • builder.setContentTitle() // required
  • .setSmallIcon() // required
  • .setContentText() // required

See example:

private NotificationManager notifManager; public void createNotification(String aMessage, Context context) {     final int NOTIFY_ID = 0; // ID of notification     String id = context.getString(R.string.default_notification_channel_id); // default_channel_id     String title = context.getString(R.string.default_notification_channel_title); // Default Channel     Intent intent;     PendingIntent pendingIntent;     NotificationCompat.Builder builder;     if (notifManager == null) {         notifManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);     }     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {         int importance = NotificationManager.IMPORTANCE_HIGH;         NotificationChannel mChannel = notifManager.getNotificationChannel(id);         if (mChannel == null) {             mChannel = new NotificationChannel(id, title, importance);             mChannel.enableVibration(true);             mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});             notifManager.createNotificationChannel(mChannel);         }         builder = new NotificationCompat.Builder(context, id);         intent = new Intent(context, MainActivity.class);         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);         pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);         builder.setContentTitle(aMessage)                            // required                .setSmallIcon(android.R.drawable.ic_popup_reminder)   // required                .setContentText(context.getString(R.string.app_name)) // required                .setDefaults(Notification.DEFAULT_ALL)                .setAutoCancel(true)                .setContentIntent(pendingIntent)                .setTicker(aMessage)                .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});     }     else {         builder = new NotificationCompat.Builder(context, id);         intent = new Intent(context, MainActivity.class);         intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);         pendingIntent = PendingIntent.getActivity(context, 0, intent, 0);         builder.setContentTitle(aMessage)                            // required                .setSmallIcon(android.R.drawable.ic_popup_reminder)   // required                .setContentText(context.getString(R.string.app_name)) // required                .setDefaults(Notification.DEFAULT_ALL)                .setAutoCancel(true)                .setContentIntent(pendingIntent)                .setTicker(aMessage)                .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400})                .setPriority(Notification.PRIORITY_HIGH);     }     Notification notification = builder.build();     notifManager.notify(NOTIFY_ID, notification); } 
like image 191
Andy Sander Avatar answered Sep 30 '22 10:09

Andy Sander