breakline
breakline

Reputation: 6073

Notification not showing up on Android 8

I've read most question/answers on this but my notification still isn't showing up.

My Broadcast receiver gets called, but then nothing happens. There is no error message nor exception. here is my code:

public class AlarmReceiver extends BroadcastReceiver {

    private static int notificationId = 0;

    @Override
    public void onReceive(Context context, Intent intent) {
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        Intent notificationIntent = new Intent(context, MainActivity.class);
        notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 101, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
                context, "mychannel")
                .setSmallIcon(R.drawable.icon_awake)
                .setContentTitle("MyAlarm")
                .setContentText("Something")
                .setAutoCancel(false)
                .setWhen(System.currentTimeMillis())
                .setContentIntent(pendingIntent);
        notificationManager.notify(notificationId++, mNotifyBuilder.build());
    }

}

Upvotes: 1

Views: 427

Answers (3)

Jigar Fumakiya
Jigar Fumakiya

Reputation: 2319

I think you forget to Read Google Documents on Oreo 8.0. If you want to create a notification on 8.0 you need to use NotificationChannel

like this:

    NotificationChannel channel = null;
    String chanel = "MY_Musixbox";

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        int importance = NotificationManager.IMPORTANCE_LOW;
        channel = new NotificationChannel(chanel, "MusicBox", importance);
        notificationManager.createNotificationChannel(channel);

    }

And then add your notification

NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
                context, "mychannel")
                .setSmallIcon(R.drawable.icon_awake)
                .setContentTitle("MyAlarm")
                .setContentText("Something")
                 .setChannelId(chanel);
                .setAutoCancel(false)
                .setWhen(System.currentTimeMillis())
                .setContentIntent(pendingIntent);
        notificationManager.notify(notificationId++, mNotifyBuilder.build());

Upvotes: 1

Aiyaz Parmar
Aiyaz Parmar

Reputation: 562

NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    Intent notificationIntent = new Intent(context, MainActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    PendingIntent pendingIntent = PendingIntent.getActivity(context, 101, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
            context, "mychannel")
            .setSmallIcon(R.drawable.icon_awake)
            .setContentTitle("MyAlarm")
            .setContentText("Something")
            .setAutoCancel(false)
            .setWhen(System.currentTimeMillis())
            .setChannelId("default_channel")
            .setContentIntent(pendingIntent);
    notificationManager.notify(notificationId++, mNotifyBuilder.build());

Try this. you have to define channel id. thats compulsory in android 8.0

Upvotes: 0

breakline
breakline

Reputation: 6073

Okay, so I will answer this myself in case somebody finds it: seems you need to manually create the notification channel yourself too:

if (Build.VERSION.SDK_INT >= 26) {
            NotificationChannel channel = new NotificationChannel("mychannel",
                    "Channel name",
                    NotificationManager.IMPORTANCE_HIGH);
            channel.setDescription("Channel description");
            notificationManager.createNotificationChannel(channel);
        }

Upvotes: 0

Related Questions