Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NotificationChannel issue in Android O

I am getting a toast saying "Developer warning for package com.google.android.apps.messaging" when sending an MMS using Android Messages ver 2.3.063.

In logs

08-12 16:57:52.368  7661  7682 W Notification: Use of stream types is deprecated for operations other than volume control 08-12 16:57:52.368  7661  7682 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case 08-12 16:57:52.369  1604  3146 E NotificationService: No Channel found for pkg=com.google.android.apps.messaging, channelId=miscellaneous, id=5, tag=null, opPkg=com.google.android.apps.messaging, callingUid=10130, userId=0, incomingUserId=0, notificationUid=10130, notification=Notification(channel=miscellaneous pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x8 color=0xff2a56c6 vis=PRIVATE) 08-12 16:57:52.375  1604  3094 D CompatibilityInfo: mCompatibilityFlags - 0 08-12 16:57:52.375  1604  3094 D CompatibilityInfo: applicationDensity - 480 08-12 16:57:52.375  1604  3094 D CompatibilityInfo: applicationScale - 1.0 08-12 16:57:52.378  7661  7682 I BugleNotifications: Notifying for tag = null, type = RESIZING_NOTIFICATION_ID, notification = Notification(channel=miscellaneous pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x8 color=0xff2a56c6 vis=PRIVATE) 08-12 16:57:52.381  7661  8893 W Notification: Use of stream types is deprecated for operations other than volume control 08-12 16:57:52.381  7661  8893 W Notification: See the documentation of setSound() for what to use instead with android.media.AudioAttributes to qualify your playback use case 08-12 16:57:52.384  1604  1618 E NotificationService: No Channel found for pkg=com.google.android.apps.messaging, channelId=miscellaneous, id=5, tag=null, opPkg=com.google.android.apps.messaging, callingUid=10130, userId=0, incomingUserId=0, notificationUid=10130, notification=Notification(channel=miscellaneous pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x8 color=0xff2a56c6 vis=PRIVATE) 08-12 16:57:52.384   880  1657 W StreamHAL: Error from HAL stream in function get_presentation_position: Operation not permitted 08-12 16:57:52.387  7661  8893 I BugleNotifications: Notifying for tag = null, type = RESIZING_NOTIFICATION_ID, notification = Notification(channel=miscellaneous pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x8 color=0xff2a56c6 vis=PRIVATE) 08-12 16:57:52.390  1604  1647 E NotificationService: No Channel found for pkg=com.google.android.apps.messaging, channelId=miscellaneous, id=5, tag=null, opPkg=com.google.android.apps.messaging, callingUid=10130, userId=0, incomingUserId=0, notificationUid=10130, notification=Notification(channel=miscellaneous pri=0 contentView=null vibrate=null sound=null defaults=0x0 flags=0x48 color=0xff2a56c6 vis=PRIVATE) 

Google Play services ver 11.3.02
Android Messages 2.3.063
Android 8.0.0

Anyone up there to help me ? Screenshot

like image 496
Shabbir Panjesha Avatar asked Aug 14 '17 05:08

Shabbir Panjesha


People also ask

What is NotificationChannel?

android.app.NotificationChannel. A representation of settings that apply to a collection of similarly themed notifications.


2 Answers

As it is written in Android Documentation:

https://developer.android.com/preview/features/notification-channels.html

If you target Android O and post a notification without specifying a valid notifications channel, the notification fails to post and the system logs an error.

To solve this issue you need to create a NotificationChannel.

NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  // The id of the channel. String id = "my_channel_01";  // The user-visible name of the channel. CharSequence name = getString(R.string.channel_name);  // The user-visible description of the channel. String description = getString(R.string.channel_description);  int importance = NotificationManager.IMPORTANCE_LOW;  NotificationChannel mChannel = new NotificationChannel(id, name,importance);  // Configure the notification channel. mChannel.setDescription(description);  mChannel.enableLights(true); // Sets the notification light color for notifications posted to this // channel, if the device supports this feature. mChannel.setLightColor(Color.RED);  mChannel.enableVibration(true); mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});  mNotificationManager.createNotificationChannel(mChannel); 

And then assign it to your Notification like this:

mNotificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);  // Sets an ID for the notification, so it can be updated. int notifyID = 1;  // The id of the channel. String CHANNEL_ID = "my_channel_01";  // Create a notification and set the notification channel. Notification notification = new Notification.Builder(MainActivity.this)     .setContentTitle("New Message")     .setContentText("You've received new messages.")     .setSmallIcon(R.drawable.ic_notify_status)     .setChannelId(CHANNEL_ID)     .build();  // Issue the notification. mNotificationManager.notify(id, notification); 

Update:

In case you want to use NotificationCompat here is a simple example:

NotificationCompat.Builder mBuilder; mBuilder = new NotificationCompat.Builder(getApplicationContext())     .setSmallIcon(R.mipmap.ic_launcher_icon)     .setContentTitle("Title")     .setContentText("Text")     .setOngoing(true)     .setChannelId(id); 

In fact you have to use Notification Builder in order to set channel id via setChannelId();

like image 99
Milad Moosavi Avatar answered Sep 18 '22 05:09

Milad Moosavi


Messages on Toast and Logcat talk about you should be paid attention to 2 items and them order:

  1. NotificationChannel mChannel = new NotificationChannel(id, name, importance);
  2. builder = new NotificationCompat.Builder(this, 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 the example in On Android 8.1 API 27 notification does not display.

like image 33
Andy Sander Avatar answered Sep 21 '22 05:09

Andy Sander