2013-02-27 18 views
93

Desidero che la notifica venga chiusa dopo che l'utente ha fatto clic su di essa. Ho visto che tutti dicevano di usare i flag, ma non trovo i flag ovunque perché sto usando la classe NotificationCompat.Builder e non la classe Notification. Qualcuno ha idea di come rimuovere la notifica da sola?
Ecco il mio codice quando sto impostando la notifica:Rimuovere la notifica dopo aver fatto clic su

NotificationCompat.Builder mBuilder = 
      new NotificationCompat.Builder(this) 
      .setSmallIcon(R.drawable.ic_launcher) 
      .setContentTitle("New Question") 
      .setContentText("" + QuestionData.getAuthor().getUserName() + ": " + QuestionData.getQuestion() + ""); 

    Intent openHomePageActivity = new Intent("com.example.ihelp.HOMEPAGEACTIVITY"); 
    TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
    stackBuilder.addNextIntent(openHomePageActivity); 

    PendingIntent resultPendingIntent = 
      stackBuilder.getPendingIntent(
       0, 
       PendingIntent.FLAG_UPDATE_CURRENT 
      ); 
    mBuilder.setContentIntent(resultPendingIntent); 
    NotificationManager mNotificationManager = 
     (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);  

    mNotificationManager.notify(0, mBuilder.build()); 

risposta

258

Facile, è sufficiente chiamare questo:

mBuilder.setAutoCancel(true); 

Inoltre, mentre non è davvero necessario, se si vuole veramente utilizzare FLAG_AUTO_CANCEL, basta chiamare questo prima di chiamare mNotificationManager.notify:

mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL; 
+2

Questa è la migliore risposta ... la flag_auto_cancel non funzionava ... mi hai salvato la giornata! – allemattio

+1

Il metodo successivo getNotification è stato deprecato !!! – sandalone

+0

Il primo funziona! Grazie mille! – Vladimir

15

Prova questo ....

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

.......... 
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
      this).setSmallIcon(R.drawable.push_notify_icon) 
      .setContentTitle("New Question!") 
      .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)) 
      .setAutoCancel(true).setContentText("" + QuestionData.getAuthor().getUserName() + ": " + QuestionData.getQuestion() + ""); 
mBuilder.setContentIntent(contentIntent); 

    ..............   


mBuilder.getNotification().flags |= Notification.FLAG_AUTO_CANCEL; 
mNotificationManager.notify(0, mBuilder.build()); 
+1

'.getNotification()' è deprecato ora usa '.build()' invece come 'mBuilder.build(). flags | = Notification.FLAG_AUTO_CANCEL;' –

Problemi correlati