android等待意图通知问题

我在我的应用程序中发生了一个警报事件,它会启动一个通知,然后按下时启动一个活动。 问题是,当我创build多个警报时,从通知中启动的活动获得与第一个相同的额外资源。 我认为这个问题或者是出于意图,或者是等待意图本身。 我想我可能需要在其中的一个标志,但我不知道哪一个。

Intent showIntent =new Intent(context, notificationreceiver.class); showIntent.putExtra("details", alarmname); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, showIntent, 0); notification.setLatestEventInfo(context, "The event is imminent", alarmname, contentIntent); 

和通知的接收者

 Bundle b = getIntent().getExtras(); String eventname = b.getString("details"); details.setText(eventname); 

下一次发生通知而不是具有不同的值时,“细节”额外是相同的。 在我设定意图之前,我确信正确的价值是“细节”,所以每次我按任何通知时,都会得到第一个意图的问题。 我怎样才能使其发起正确的意图? 希望我尽可能清楚,谢谢!

  • 如何在android中处理浏览器的“共享页面”意图?
  • getExtras和getBundleExtras有什么区别?
  • 不是封闭的类错误Android Studio
  • 如何清除启动Activity的意图?
  • OpenCV服务意图必须明确,Android 5.0棒棒糖
  • 通知点击的Android通话方法
  • 如何通过Intent在Android中打开文件
  • 使用Cache Uri作为MediaStore.EXTRA_OUTPUT时,相机无法正常工作/保存
  • 问题是,当我创build多个警报时,从通知中启动的活动获得与第一个相同的额外资源。

    正确。

    我怎样才能使其发起正确的意图?

    这取决于你是否有两个报警,将立即登记,或不。

    如果没有,您可以使用FLAG_ONE_SHOT或其他PendingIntent标志之一来让您的第二个PendingIntent使用更新的附加组件。

    但是,如果您将同时注册两个具有不同Intent filterEquals()警报,则需要使两个Intents更加实质性不同,以便在比较两者时filterEquals()返回false 。 例如,您可以调用setData()setAction()并为每个Intent提供不同的值。

    我解决这个问题的方法是通过在获得PendingIntent时分配唯一的requestCode

     PendingIntent.getActivity(context, requestCode, showIntent, 0); 

    通过这样做,您正在注册系统不同/唯一的意图实例。 提示:使requestCode唯一的一个好方法是将当前系统时间传递给它。

     int requestID = (int) System.currentTimeMillis(); 

    另一个scheme

    像这样使用PendingIntent.FLAG_UPDATE_CURRENT

     PendingIntent contentIntent = PendingIntent.getActivity(this, 0,i, PendingIntent.FLAG_UPDATE_CURRENT); 

    这对我工作

    我在我的应用程序中有这个问题,只是生成一个随机数来覆盖通知意图:

     int random= new Random().nextInt(); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( random, PendingIntent.FLAG_UPDATE_CURRENT );