取消通知无效

时间:2013-12-15 19:13:06

标签: java android eclipse

我想点击addAction后取消/删除通知。

然而它不起作用。点击后通知仍然存在。 我很确定这可以在其他项目中使用。

任何人都可以看到我犯了一个愚蠢的错误,为什么它不起作用?

实际代码:

    public class AlarmReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent arg1) {

    showNotification(context);

}

private void showNotification(Context context){


    String onderwerp = ("Medicatietijd");
    String name = ("Het is tijd om je medicitie in te nemen.");

    // Geluid notificatie
    Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

    // Notificatie trigger
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
            new Intent(context, Test.class), 0);

    // De notificatie
    Notification mNotification = new Notification.Builder(context)

        .setContentTitle(onderwerp)
        .setContentText(name)
        .setSmallIcon(R.drawable.ninja)
        .setSound(soundUri)
        .addAction(R.drawable.ja, "Ja, ik heb ze ingenomen.", contentIntent)
        .setAutoCancel(true)

        .build();

    NotificationManager notificationManager 
       = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    mNotification.vibrate = new long[]{100, 200, 100, 500}; 
    mNotification.flags |= Notification.FLAG_AUTO_CANCEL;       

    notificationManager.notify(0, mNotification);

}

解决方案: 在测试活动中,OnCreate添加了这个:

   NotificationManager notificationManager 
       = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.cancel(0);

1 个答案:

答案 0 :(得分:0)

如果您决定使用Test活动来接收addAction来电的意图,则必须在收到活动意图时取消通知。

我还建议您为意图添加requestCode

以下是代码:

设置requestCode修改此项:

static final int REQ_CODE = 101; // some number
// Notificatie trigger
PendingIntent contentIntent = PendingIntent.getActivity(context, REQ_CODE,
    new Intent(context, Test.class), 0);

在Test活动类中处理活动意图并解除通知:

@Override
protected void onActivityResult (int requestCode, int resultCode, Intent data) {
    if (requestCode == REQ_CODE) {
        // dismiss notification
        notificationManager.cancel(0);

        // handle your action
        // ...
    }
}

希望有所帮助