2017-06-30 21 views
1

我想解僱我的通知,當點擊通知消除時。就像我們在刷卡上解僱它一樣。如何解除關於操作的通知單擊?

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

    Intent intent = new Intent(ctx, MainActivity.class); 
    intent.putExtra("isFromBadge", false); 

    Intent resultIntent = new Intent(ctx, ResultActivity.class); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(ctx); 
    stackBuilder.addParentStack(ResultActivity.class); 
    stackBuilder.addNextIntent(resultIntent); 
    PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_ONE_SHOT); 

    PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, resultIntent, PendingIntent.FLAG_CANCEL_CURRENT); 

    // PendingIntent contentIntent = PendingIntent.getActivity(ctx, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Notification notification = new Notification.Builder(ctx) 
      .setContentTitle(
        ctx.getResources().getString(R.string.app_name)) 
      .setContentText(message) 
      .setWhen(when) 
      .setStyle(new Notification.BigPictureStyle().bigPicture(result)) 
      .setSmallIcon(R.mipmap.ic_launcher) 
      .addAction(R.drawable.bell, "Dismiss", resultPendingIntent) 
      .addAction(R.drawable.bell, "Share", contentIntent) 
      .setLargeIcon(result) 
      .setAutoCancel(true) 
      .build(); 

回答

0

可以使用notification_id取消通知您提供在使用NotificationManager

要通知創建通知 -

mNotificationManager.notify(_notificationId /* ID of notification */, mBuilder.build()); 

要取消通知 -

mNotificationManager.cancel(_notificationId); 
+0

我想取消只有當用戶點擊解僱按鈕。 –

+0

解僱按鈕在哪裏? Ge點擊事件並在那邊調用'cancel'。 – Wizard

0

嘗試這樣

public void showNotification(Context ctx) { 
    int noti_id = 100; 
    NotificationManager notificationManager = (NotificationManager) ctx 
       .getSystemService(Context.NOTIFICATION_SERVICE); 

    Intent actionIntent = new Intent(ctx, ActionReceiver.class); 
    actionIntent.putExtra("noti_id", noti_id); 

    PendingIntent pendingIntent = PendingIntent.getBroadcast(ctx, noti_id, actionIntent, 
     PendingIntent.FLAG_CANCEL_CURRENT); 

    Notification notification = new Notification.Builder(ctx) 
           .setContentTitle("hello") 
           .setContentText("Hello") 
           .addAction(R.drawable.bell, "dismiss", pendingIntent) 
           .setAutoCancel(false) 
           .build(); 


    notificationManager.notify(noti_id, notification); 
} 



public class ActionReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent != null) { 
      int noti_id = intent.getIntExtra("noti_id", -1); 

      if (noti_id > 0) { 
       NotificationManager notificationManager = (NotificationManager) context 
       .getSystemService(Context.NOTIFICATION_SERVICE); 

       notificationManager.cancel(noti_id); 
      } 
     } 
    } 
}