我遇到了一个问题,我不知道为什么会这样。
我从手持设备向可穿戴设备发送通知,以了解何时必须打开活动。
从手持设备,我发送一个Integer值的ArrayList:
dataMapRequest.getDataMap().putIntegerArrayList("SELECTED_RISKS", this.selectedRisks);
在WearableListenerService实现的方法“onDataChange”中,在我的Wear应用程序中,我以这种方式获取值:
ArrayList<Integer> risksSelected = dataMapItem.getDataMap().getIntegerArrayList("SELECTED_RISKS");
这很有效。 ArrayList不为null。然后,我将ArrayList放在“Extras”中,将它们设置为Intent并在Wearable中显示Notification:
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正在保存ArrayList。但问题来了。
当我尝试在“MainActivity”中加载额外内容时:
if(extras.containsKey("SELECTED_RISKS") && extras.getIntegerArrayList("SELECTED_RISKS")!=null)
该包具有键“SELECTED_RISKS”,但其值为null。
我不知道为什么会这样,你能帮助我吗?
由于
答案 0 :(得分:0)
这可能是由于PendingIntent
的工作方式。使用PendingIntent
时,额外内容会丢失,这是一个常见问题。如果您之前已经设置了具有特定意图的PendingIntent
,现在您再次设置它,唯一的区别是额外的,将使用旧的意图。
查看PendingIntent
的文档。具体来说,您可以尝试使用FLAG_UPDATE_CURRENT
来强制新增内容。