对Android中的通知点击没有影响

时间:2012-12-26 10:26:25

标签: android-notifications

我在我的应用程序中使用本地通知。

    showNotification(this, "Title1", "Message One", 1);
    showNotification(this, "Title2", "Message Two", 2);
    showNotification(this, "Title3", "Message Three", 3);
    showNotification(this, "Title4", "Message Four", 4);


public static void showNotification(Context con, String title,
        String message, int id) {


    NotificationManager manager = (NotificationManager) con
            .getSystemService(Context.NOTIFICATION_SERVICE);

    Notification note = new Notification(R.drawable.ic_noti_logo,title, System.currentTimeMillis());

    Intent notificationIntent = new Intent(con,Result.class);
    notificationIntent.putExtra("Message", message);
    notificationIntent.putExtra("NotiId", id);

    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
            | Intent.FLAG_ACTIVITY_SINGLE_TOP);

    PendingIntent pi = PendingIntent.getActivity(con, 0,
            notificationIntent, PendingIntent.FLAG_ONE_SHOT);

    note.setLatestEventInfo(con, title, message, pi);

    note.defaults |= Notification.DEFAULT_ALL;
    note.flags |= Notification.FLAG_AUTO_CANCEL;
    manager.notify(id, note);
}
Resut.java中的

    message = getIntent().getStringExtra("Message");
    notiId = getIntent().getIntExtra("NotiId", 0);

    showAlert(message,notiId);

private void showAlert(String msg, int id) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage(msg).setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                //  finish();
                    cancelNotification(Result.this,id);
                }
            });
    AlertDialog alert = builder.create();
    alert.show();
}

public static void cancelNotification(Context con, int id) {

    NotificationManager manager = (NotificationManager) con
            .getSystemService(Context.NOTIFICATION_SERVICE);
    manager.cancel(id);
}

我的问题是,我在通知栏中收到4条通知消息,当我点击其中任何一条消息时,我正在重定向到Result活动,但只有当我第二次点击时没有效果。请帮帮我。

1 个答案:

答案 0 :(得分:1)

问题是四个通知共享相同的PendingIntent,因为它们引用了等效的Intents(Intent.filterEquals()的文档解释了它被认为是不同的,Intents必须在action,data,class中有所不同,类型或类别 - 注意在确定Intents是否相等时特别不考虑额外的内容。此外,您正在使用PendingIntent.FLAG_ONE_SHOT,以确保PendingIntent只能使用一次。