[英]Notification manager is not showing notifications
我正在构建一个提醒应用程序。 为此,我需要在触发警报管理器时显示通知。 我已经实现了一点。 警报正在工作,但没有显示任何通知。
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();
}
}
更新
我唯一错过的是在初始化通知构建器时传递通道 ID。
代替
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);
工作解决方案是
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);
而不是这个
manager.notify(1, builder.build());
尝试这个:
manager.notify(getResources().getInteger(R.id.yourNotificationid),builder.build());
在初始化通知构建器时,现在通知通道是必须的。 因此,在上述问题中,我在初始化通知生成器时忘记指定通知通道的 ID。
正确的顺序是
Builder(Context context, String channelId)
因此修正是
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.