取消通知后,无法再次重新通知具有相同ID的通知。为什么?

时间:2015-11-18 11:04:20

标签: android notifications

我正在开发Android Studio。我有一项服务,可以生成在网络中检测到更改时更新的通知(WiFi,3G)。该服务由交换机控制,并生成用户无法删除的通知。 当我停止服务时,我使用cancel(id)来删除通知。 问题是当我尝试再次激活服务时,不会生成通知。有没有什么办法解决这一问题? 这些是我生成通知的代码行: PD。没有生成异常

修改

我尝试使用其他ID创建通知,但它不起作用。

protected void onProgressUpdate(String... values) {

        WifiManager wifimanager = (WifiManager) context.getSystemService(WIFI_SERVICE);

        //Datos
        try {
            if(wifimanager.isWifiEnabled() && values[0].equalsIgnoreCase("false") && values[1].equalsIgnoreCase("true")) {
                NotificationManager manager;
                Notification myNotication;
                manager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
                Intent notificacionIntent = new Intent(context.getApplicationContext(), Servicio.class);
                PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, notificacionIntent, 0);
                Notification.Builder builder = new Notification.Builder(context);
                builder.setTicker("Wifi-3G");
                builder.setContentTitle("Wifi-3G Notification");
                builder.setContentText(getString(R.string.conectado_wifi));
                builder.setSmallIcon(R.mipmap.logo_agus_android);
                builder.setContentIntent(pendingIntent);
                builder.setOngoing(true);
                //builder.setAutoCancel(true);
                myNotication = builder.build();
                manager.notify(11, myNotication);
            }

我在这里取消服务:

swt.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            DatabaseHandler db = new DatabaseHandler(Servicio.this);
            auxS = Boolean.toString(isChecked);
            Preferencia pref = new Preferencia(2,"Servicio", auxS);
            db.updatePrefe(pref);
            if (isChecked){
                startService(new Intent(Servicio.this, MyService.class));
                Notificacion noti = new Notificacion(1, 11, "Wifi-3G Notification", "Estás conectado a la red a través de WiFi", "Servicio.class");
                db.addNotificacion(noti);
            }
            else {
                stopService(new Intent(Servicio.this, MyService.class));
                Notificacion noti = new Notificacion(1, 11, "Wifi-3G Notification", "Estás conectado a la red a través de WiFi", "Servicio.class");
                db.deleteNotificacion(noti);
            }
        }
    });

我在onDestroy()方法中取消通知:

@Override
public void onDestroy() {
    super.onDestroy();
    Toast.makeText(this, R.string.servicio_destruido, Toast.LENGTH_SHORT).show();
    DatabaseHandler db = new DatabaseHandler(this);
    pref=new Preferencia(3,"EstadoServ","false");
    db.updatePrefe(pref);
    NotificationManager  manager = (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);
    manager.cancel(11);
    Conexiones.cancel(true);
}

我不是英语,这是我的第一个问题,抱歉。如果您需要有关我的代码的更多信息,请不要犹豫,问我。

2 个答案:

答案 0 :(得分:0)

解决,问题是没有使用onCancelled()方法。

答案 1 :(得分:-1)

您可以更新通知,但只要应用程序在内存中,您就无法使用相同的通知ID。