4

更新:在我的 ActivityCentresPage 中似乎没有得到正确的意图。我是否需要一种特殊的方式从通知中获取意图?

我为我的意图添加了一个新键,即使有一个值,我的 ActivityCentresPAge 也将其显示为 null。我的活动有什么意图?

我正在构建我的接收器来处理 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 循环中)都以 place_ 开头时,会调用 addAction 的意图。

谁能看到我在这里做错了什么?

编辑:这条线

Log.d("FUApp", obj.getString("name"));

输出正确的信息,因此将两组不同的数据传递给该方法。此外,如果 to_load_action 不是以venue_ 开头,而for 循环中的操作确实如此,那么一切正常。

4

2 回答 2

0

我通过给每个 PendingIntent 一个新的 ID 来对问题进行排序,我相信问题是 PendingIntent 被覆盖的地方。

于 2013-09-12T09:37:46.587 回答
0

在 pendingIntent 中你不应该使用标志吗?

    PendingIntent pIntent2 = PendingIntent.getActivity(ctx, 0, intent2, Intent.FLAG_ACTIVITY_NEW_TASK);

或这个

PendingIntent.FLAG_UPDATE_CURRENT
于 2013-09-11T12:08:03.623 回答