当前位置: 首页 > 知识库问答 >
问题:

在Android中,如何显示每次从广播接收器启动时添加的新通知

年业
2023-03-14

我正在开发一个Android应用程序。在我的应用程序中,我显示了从广播接收器内部发射的通知。显示接收方的通知工作正常。但我对我想要的有一点小问题。这是一个自我取消通知。用户无法关闭。

现在发生的情况是,当它被激发时,它不会在通知栏中追加新的通知(如果已经存在通知的话)。只是现有的一个一直在显示。我想要的是,无论接收方内部的通知管理器发出的通知有多少,只要它被激发,它就会被追加。

这是我的接收器发射自关闭通知

public class GalleryImageUploadReceiver extends BroadcastReceiver {

    private Context context;
    private NotificationCompat.Builder notification;
    private static final int NOTIFICATION_ID = 1;
    private NotificationManager nm;

    @Override
    public void onReceive(Context pContext, Intent intent) {
        this.context = pContext;
        initialize(intent);
        showProcessNotification();
        uploadImagesToServer();
    }

    private void initialize(Intent intent)
    {
       //initialize data
    }

    private void uploadImagesToServer()
    {
        // do async task and close itself
        if(nm!=null)
        {
            nm.cancel(NOTIFICATION_ID);
        }
    }

    public void showProcessNotification()
    {
        try{

            notification = new NotificationCompat.Builder(context);
            notification.setAutoCancel(true);
            notification.setSmallIcon(R.mipmap.ic_launcher);
            notification.setWhen(System.currentTimeMillis());
            notification.setTicker("Uploading image(s)...");
            notification.setContentTitle(context.getResources().getString(R.string.app_name));
            notification.setContentTitle("Uploading image(s)...");
            notification.setAutoCancel(true);
            notification.setOngoing(true);
            notification.setDefaults(Notification.FLAG_ONGOING_EVENT);
            nm = (NotificationManager)context.getApplicationContext().getSystemService(context.getApplicationContext().NOTIFICATION_SERVICE);
            nm.notify(NOTIFICATION_ID,notification.build());
        }
        catch (Exception e)
        {

        }


    }


    public void uploadImages(Context context,Intent intent)
    {
        onReceive(context,intent);
    } 
}

这就是我在活动中使用接收器触发通知的方式

//inside a click listener
GalleryImageUploadReceiver receiver = new GalleryImageUploadReceiver();
receiver.uploadImages(getBaseContext(),intent);

该代码的问题是,当我单击按钮时,新通知将覆盖现有通知,因此屏幕中只显示一个通知。无论我点击多少次。例如,如果通知持续5秒,当我在第一个通知被激发2秒后再次单击该按钮时,现有的通知将持续7秒。通知栏中没有添加新的。我如何使它追加为一个新的每当按钮被点击。

共有1个答案

楚宪
2023-03-14

为每个通知使用唯一的通知id。因为您使用的是常量'notification_id',所以新的通知将覆盖现有的通知。

 类似资料:
  • 如果触发了多个通知,那么由于NOTIFICATION_ID是相同的,所以它不会更新。 有没有办法知道有多少通知被激发了?以便我可以相应地更新我的通知。 我不想单独发出通知。我想更新现有的通知。在这里,我只需要计算出在触发通知时已经触发的通知数。当用户点击它时,该号码应该重置。

  • 即使使用Intent,该活动也不会从引导完成的onRecture的广播接收器开始。FLAG_ACTIVITY_NEW_TASK没有帮助,仍然经历同样的错误。 原因:Android。util。AndroidRuntimeException:从活动上下文外部调用startActivity()需要标志_Activity_NEW_TASK标志。这真的是你想要的吗?

  • (与我刚刚发布的另一个问题略有不同,如果这违反了规则,请道歉) 在我的活动1中,我正在设置一些共享首选项,接下来我将通过意图启动另一个活动2,并从中设置一些文本视图。。。这一切都很好。 这就是我的问题。在我的第一个活动1中,我有一个带有挂起意图的警报管理器,这个挂起意图是一个用于锁定手机的广播接收器,然后启动活动2。这个活动和上面提到的第二个活动是一样的。但是,当此活动从启动时,没有任何文本视图从

  • 问题内容: 我正在尝试从广播接收器启动状态栏通知,然后从另一个广播接收器停止它,但是出现问题。当USB连接时,我想在状态栏中启动通知,然后当USB断开连接时,我想停止它。我已经设置了两个接收器,并且正在努力从接收器中启动和停止一个接收器,这是代码我目前有 我的代码唯一的错误是该行,该错误仅表明getSystemService未定义,并且它想使该方法(我认为这意味着接收者不像活动那样支持该方法),所

  • 根据谷歌提供的AndroidO迁移指南,大部分隐含的广播意图不应该在清单中注册(除了这里发现的一些例外),但显式广播意图保持不变。 我们希望将任何需要的广播从舱单上移开。但我们如何识别接收者是否是隐性的呢?有一般规则吗? 下面是我们在清单中注册的广播示例。我们是否应该只查看“action”标记,并查看它是否被列入白名单以将其保留在清单中? 例如,“com.android.vending.INSTA

  • 问题内容: 有人可以解释和之间的确切区别吗? 在什么情况下我们必须使用每个Receiver类? 问题答案: 和之间只有一个区别。 当您收到内部广播方法时, 假设, BroadcastReceiver : 它 不保证 该 CPU将保持清醒 ,如果你启动一些长时间运行的进程。CPU可能会立即回到睡眠状态。 WakefulBroadcastReceiver : 这是 保证 该 CPU将保持清醒 ,直到你