spa*_*agi 72 notifications android android-intent
我在我的应用程序中发生了一个警报,它会启动一个通知,然后在按下时启动一个活动.问题是,当我创建多个警报时,从通知启动的活动会获得与第一个相同的额外内容.我认为这个问题要么是我在未决意图中的意图,要么是在未决意图本身.我想我可能需要在其中一个上放一面旗帜,但我不知道哪一个.
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);
Run Code Online (Sandbox Code Playgroud)
和通知的接收者
Bundle b = getIntent().getExtras();
String eventname = b.getString("details");
details.setText(eventname);
Run Code Online (Sandbox Code Playgroud)
每次下次通知发生时,"详细信息"额外都是相同的,而不是具有不同的值.直到我设置意图,我确信正确的值转到"详细信息",因此每次按任何通知时都会获得第一个意图的问题.如何才能启动正确的意图呢?希望我尽可能清楚,谢谢!
小智 116
我解决这个问题的方法是在获得PendingIntent时分配一个唯一的requestCode:
PendingIntent.getActivity(context, requestCode, showIntent, 0);
Run Code Online (Sandbox Code Playgroud)
通过这样做,您将向系统注册不同/唯一的intent实例. 提示:使requestCode唯一的一个好方法是将当前系统时间传递给它.
int requestID = (int) System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)
Com*_*are 68
问题是,当我创建多个警报时,从通知启动的活动会获得与第一个相同的额外内容.
正确.
如何才能启动正确的意图呢?
这取决于您是否有两个将同时注册的警报.
如果没有,您可以使用FLAG_ONE_SHOT或其中一个其他PendingIntent标志让您的第二个PendingIntent使用更新的额外.
但是,如果您将同时注册两个警报,并且具有不同的Intent附加功能,则需要使两者Intents更具实质性的不同,以便在比较两者时filterEquals()返回false.例如,您可以调用setData()或setAction()为每个值提供不同的值Intent.
| 归档时间: |
|
| 查看次数: |
38098 次 |
| 最近记录: |