我有一个问题,我不知道为什么会发生。
我从手持设备向可穿戴设备发送一个通知,以知道它何时必须打开一个活动。
从手持设备,我发送一个Integer值的ArrayList:
dataMapRequest.getDataMap().putIntegerArrayList("SELECTED_RISKS", this.selectedRisks);
在WearableListenerService实现中的方法"ondatachchange"中,在我的Wear App中,我以这种方式获得值:
ArrayList<Integer> risksSelected = dataMapItem.getDataMap().getIntegerArrayList("SELECTED_RISKS");
这工作。ArrayList不为空。然后,我把这个ArrayList放到Extras中,将它们设置为Intent并在Wearable:
中显示通知Intent viewIntent = new Intent(this, MainActivity.class);
Bundle extras = new Bundle();
extras.putIntegerArrayList("SELECTED_RISKS", risksSelected);
viewIntent.putExtras(extras);
PendingIntent pendingViewIntent = PendingIntent.getActivity(this, 0, viewIntent, 0);
...
这也可以。我可以在调试器中看到Extras正在保存数组列表。但问题在这里。
当我尝试加载额外的"MainActivity":
if(extras.containsKey("SELECTED_RISKS") && extras.getIntegerArrayList("SELECTED_RISKS")!=null)
bundle的键是"SELECTED_RISKS",但是它的值是null。
我不知道为什么会这样,你能帮帮我吗?谢谢
这可能是由于PendingIntent
的工作方式。这是一个常见的问题,额外丢失时,使用PendingIntent
。如果你之前已经设置了一个具有特定意图的PendingIntent
,现在你再次设置它,唯一的区别是额外的,旧的意图将被使用。
查看PendingIntent
的文档。具体来说,您可以尝试使用FLAG_UPDATE_CURRENT
来强制添加新的附加内容。