【问题标题】:Notification manager is not showing notifications通知管理器不显示通知
【发布时间】:2021-02-21 16:39:58
【问题描述】:

我正在构建一个提醒应用程序。为此,我需要在触发警报管理器时显示通知。我已经实现了一点。警报正在工作,但没有显示任何通知。

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);

【问题讨论】:

    标签: android android-studio broadcastreceiver android-notifications notificationmanager


    【解决方案1】:

    不是这个

             manager.notify(1, builder.build());
    

    试试这个:

             manager.notify(getResources().getInteger(R.id.yourNotificationid),builder.build());
    

    【讨论】:

      【解决方案2】:

      在初始化通知构建器时,现在通知通道是必须的。因此,在上述问题中,我在初始化通知构建器时忘记指定 Notification Channel 的 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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-13
        • 2018-04-11
        相关资源
        最近更新 更多