如何解决通知管理器不显示通知
我正在构建一个提醒应用程序。为此,我需要在触发警报管理器时显示通知。我已经实现了一点。闹钟正在工作,但没有显示任何通知。
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,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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。