I'm building a reminder application. For that, I need to show a notification when the alarm manager is triggered. I've implemented it a little bit. The alarm is working but it isn't showing any notification.
package com.aakash.assignmentone;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Build;
import android.widget.Toast;
import androidx.core.app.NotificationCompat;
public class broadcastForReminder extends BroadcastReceiver {
static MediaPlayer mp;
static final String chID = "Reminder";
@Override
public void onReceive(Context context, Intent intent) {
String msg = intent.getStringExtra("rMsg");
if(intent.getStringExtra("rMsg") != null && intent.getStringExtra("rMsg").equals(msg)){
NotificationManager notMan = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String name = "REMINDER NOTIFICATION";
String description = "Notification channel for notifying while reminder beeps.";
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(chID, name, importance);
channel.setDescription(description);
notMan.createNotificationChannel(channel);
}
NotificationManager manager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_baseline_alarm_24)
.setContentTitle("It's time!")
.setContentText(msg)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
Intent i = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_ONE_SHOT);
builder.setContentIntent(pendingIntent);
manager.notify(1, builder.build());
}
mp = MediaPlayer.create(context, R.raw.alarm_beep);
mp.start();
}
}
Update
The only thing I missed was to pass the channel ID while initializing the notification builder.
Instead of
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_baseline_alarm_24)
.setContentTitle("It's time!")
.setContentText(msg)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);
The working solution is
NotificationCompat.Builder builder = new NotificationCompat.Builder(context, chID)
.setSmallIcon(R.drawable.ic_baseline_alarm_24)
.setContentTitle("It's time!")
.setContentText(msg)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setAutoCancel(true);