更新:似乎在我的ActivityCentresPage中没有得到正确的意图。我是否需要通过通知获取意图的特殊方式?
我为我的意图添加了一个新密钥,我的ActivityCentresPAge将其显示为null,即使有值。我的活动有什么意图?
我正在构建我的Receiver以处理GCM消息,并且一些Intent无法正常工作。
这是我的代码
private Intent getIntent(String action, JSONObject obj) {
Intent intent = new Intent(ctx, ActivityMain.class);
if (action.equals("home")) {
intent = new Intent(ctx, ActivityMain.class);
}
else if (action.equals("view_timetable")) {
intent = new Intent(ctx, ActivityViewTimetable.class);
}
else if (action.equals("invite_friends")) {
intent = new Intent(ctx, ActivityInviteFriends.class);
}
else if (action.startsWith("venue_")) {
try {
intent = new Intent(ctx, ActivityCentrePage.class);
Log.d("FUApp", obj.getString("name"));
BaseActivity bAct = new BaseActivity();
intent.putExtra(bAct.ExtraKeyCentreName, obj.getString("name"));
intent.putExtra(bAct.ExtraKeyCentreDist, "Not Available");
intent.putExtra(bAct.ExtraKeyCentreJSON, obj.toString());
intent.putExtra(bAct.ExtraKeyCentrePostcode, "none");
} catch (JSONException e) {
Log.e("FUApp", e.getMessage());
}
}
else if (action.equals("")) {
//intent = new Intent(ctx, .class);
Toast.makeText(ctx, "Empty", Toast.LENGTH_SHORT).show();
}
else
{
intent = new Intent(ctx, ActivityMain.class);
}
return intent;
}
并且
Intent intent = new Intent(ctx, ActivityMain.class);
if (to_load_action != null) {
intent = getIntent(to_load_action, to_load_obj);
}
for (int a = 0;a < todo_items.length();a++) {
JSONObject todo_item = new JSONObject();
String action = "";
String miniAction = "";
try {
todo_item = todo_items.getJSONObject(a);
action = todo_item.getString("action");
miniAction = todo_item.getString("action_title");
} catch (JSONException e) {
Log.d("FUApp", e.getMessage());
}
Intent intent2 = getIntent(action, todo_item);
PendingIntent pIntent2 = PendingIntent.getActivity(ctx, 0, intent2, 0);
mBuilder.addAction(0, miniAction, pIntent2);
}
PendingIntent pIntent = PendingIntent.getActivity(ctx, 0, intent, 0);
mBuilder.setContentIntent(pIntent);
当我点击主通知时,当to_load_action和action(在for循环中)都以venue_开头时,将调用addAction的意图。
有人能看到我错在这里吗?
编辑:这一行
Log.d("FUApp", obj.getString("name"));
输出正确的信息,因此将两个不同的数据集传递给该方法。此外,如果to_load_action不是以venue_开头,并且for循环中的操作没有,那么一切正常。
答案 0 :(得分:0)
你不应该使用标志吗?
PendingIntent pIntent2 = PendingIntent.getActivity(ctx, 0, intent2, Intent.FLAG_ACTIVITY_NEW_TASK);
或者
PendingIntent.FLAG_UPDATE_CURRENT
答案 1 :(得分:0)
我通过给每个PendingIntent提供一个新ID来排序问题,我相信问题就在于PendingIntent被覆盖了。