2014-02-25 2 views
0

У меня проблема, я хочу сделать уведомление для своего приложения. Сначала я создаю уведомление, а затем, если я этого не хочу, я хочу его снова удалить. Как это сделать, что я могу удалить определенное уведомлениеКак удалить определенное уведомление

Я начинаю это здание с setOnItemLongClickListener.

Mainactivity:

      if (isNotificationVisible()){ 
           NotificationManager mNotificationManager = 
             (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
           mNotificationManager.cancel(1122334455); 
          } 
          else { 

           int beginday = begincalendar.get(Calendar.DAY_OF_MONTH); 
           int beginyear=begincalendar.get(Calendar.YEAR); 
           int beginmonth=begincalendar.get(Calendar.MONTH); 
           Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class); 
           myIntent.setAction(String.valueOf(id)); 
           pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0); 
           AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
           alarmManager.set(AlarmManager.RTC, begincalendar.getTimeInMillis(), pendingIntent); 

          } 

NotificationService класс:

public class NotificationService extends Service { 

    @Override 
    public IBinder onBind(Intent arg0) 
    { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public void onCreate() 
    { 
     // TODO Auto-generated method stub 
     super.onCreate(); 
    } 

    @SuppressWarnings("static-access") 
    @Override 
    public void onStart(Intent intent, int startId) 
    { 
     NotificationCompat.Builder mBuilder = 
       new NotificationCompat.Builder(this) 
         .setSmallIcon(R.drawable.ic_launcher) 
         .setContentTitle("title") 
         .setOnlyAlertOnce(true) 
         .setContentText("context") 
         .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE); 


     Intent resultIntent = new Intent(this, MainActivity.class); 
     TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); 
     stackBuilder.addParentStack(MainActivity.class); 
     stackBuilder.addNextIntent(resultIntent); 
     PendingIntent resultPendingIntent = 
       stackBuilder.getPendingIntent(
         0, 
         PendingIntent.FLAG_UPDATE_CURRENT 
       ); 
     mBuilder.setContentIntent(resultPendingIntent); 
     NotificationManager mNotificationManager = 
       (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1122334455, mBuilder.build()); 
    } 


} 

AlarmReceiver класс:

public class AlarmReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     Intent service1 = new Intent(context, NotificationService.class); 
     context.startService(service1); 

    } 
} 

isNotificationVisible:

private boolean isNotificationVisible() { 
    Intent notificationIntent = new Intent(context, MainActivity.class); 
    PendingIntent test = PendingIntent.getActivity(context, 1122334455, notificationIntent, PendingIntent.FLAG_NO_CREATE); 
    return test != null; 

} 

ответ

0

Используйте метод уведомления об исключении общедоступного уведомления NotificationManager (int id), чтобы очистить уведомление.

Поэтому предположим, если вы хотите, чтобы отменить это уведомление на кнопку мыши затем добавьте следующий код в методе OnClick(),

mNotificationManager.cancel(1122334455); // parameter is your notification ID 

Для получения дополнительной информации см here.

+0

может я также проверить, если уведомление только существует и только затем делит его. У меня есть список, и для каждой строки может быть сделано уведомление? – user3241084

+0

У него нет прямого метода, но, безусловно, он работает. Проверьте http://stackoverflow.com/questions/12654820/is-it-possible-to-check-if-a-notification-is-visible-or-canceled –

+0

Он не работает, переменная проверка всегда равна нулю – user3241084

Смежные вопросы