Android O reporting notification not posted to channel - but it is

前端 未结 8 1340
礼貌的吻别
礼貌的吻别 2020-12-05 06:52

Couple Android O notification questions:

1) I have created a Notification Channel (see below), am calling the builder with .setChannelId() (passing in the name of th

相关标签:
8条回答
  • 2020-12-05 06:54

    You gotta create a channel before.

    private void createNotificationChannel() {
            // Create the NotificationChannel, but only on API 26+ because
            // the NotificationChannel class is new and not in the support library
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
                CharSequence name = getString(R.string.channel_name);
                String description = getString(R.string.channel_description);
                int importance = NotificationManager.IMPORTANCE_DEFAULT;
                NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
                channel.setDescription(description);
                // Register the channel with the system; you can't change the importance
                // or other notification behaviors after this
                NotificationManager notificationManager = getSystemService(NotificationManager.class);
                notificationManager.createNotificationChannel(channel);
            }
    }
    
    public void notifyThis(String title, String message) {
            NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this, CHANNEL_ID)
                    .setSmallIcon(R.drawable.green_circle)
                    .setContentTitle(title)
                    .setContentText(message)
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT);
    
            NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
    
            // notificationId is a unique int for each notification that you must define
            notificationManager.notify(0, mBuilder.build());
    }
    

    Finally you call this method:

    createNotificationChannel();
    notifyThis("My notification", "Hello World!");
    
    0 讨论(0)
  • 2020-12-05 07:01

    create a notification using following code :

        Notification notification = new Notification.Builder(MainActivity.this)
                  .setContentTitle("New Message")
                            .setContentText("You've received new messages.")
                            .setSmallIcon(R.mipmap.ic_launcher)
                            .setChannelId(channelId)
                            .build();
    

    not using :

    Notification notification = new NotificationCompat.Builder(MainActivity.this)
                        .setContentTitle("Some Message")
                        .setContentText("You've received new messages!")
                        .setSmallIcon(R.mipmap.ic_launcher)
                        .setChannel(channelId)
                        .build();
    
    0 讨论(0)
  • 2020-12-05 07:06

    I would also like to add that you will receive this error if you're using Build tools v26+:

    app/build.grade:

    compileSdkVersion 26
    buildToolsVersion "26.0.2"
    
    defaultConfig {
        targetSdkVersion 26
    

    Downgrading to lowest version should work fine.

    0 讨论(0)
  • 2020-12-05 07:10

    I was facing the same problem. It got resolved by creating a NotificationChannel and adding that newly created channel with the notification manager.

    0 讨论(0)
  • 2020-12-05 07:13

    First create the notification channel:

     public static final String NOTIFICATION_CHANNEL_ID = "4565";
    //Notification Channel
            CharSequence channelName = NOTIFICATION_CHANNEL_NAME;
            int importance = NotificationManager.IMPORTANCE_LOW;
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, NOTIFICATION_CHANNEL_NAME, importance);
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.enableVibration(true);
            notificationChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400});
    
    
    NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
            notificationManager.createNotificationChannel(notificationChannel);
    

    then use the channel id in the constructor:

    final NotificationCompat.Builder builder = new NotificationCompat.Builder(context, NOTIFICATION_CHANNEL_ID)
                    .setDefaults(Notification.DEFAULT_ALL)
                    .setSmallIcon(R.drawable.ic_timers)
                    .setVibrate(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400})
                    .setSound(null)
                    .setChannelId(NOTIFICATION_CHANNEL_ID)
                    .setContent(contentView)
                    .setPriority(NotificationCompat.PRIORITY_DEFAULT)
                    .setLargeIcon(picture)
                    .setTicker(sTimer)
                    .setContentIntent(pendingIntent)
                    .setAutoCancel(false);
    
    0 讨论(0)
  • 2020-12-05 07:13

    You have to create a NotificationChannel first

    val notificationChannel = NotificationChannel("channelId", "channelName", NotificationManager.IMPORTANCE_DEFAULT)
    notificationManager.createNotificationChannel(notificationChannel);
    

    This is the only way to show notification for API 26+

    0 讨论(0)
提交回复
热议问题