我正在开发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);
}
我不是英语,这是我的第一个问题,抱歉。如果您需要有关我的代码的更多信息,请不要犹豫,问我。
答案 0 :(得分:0)
解决,问题是没有使用onCancelled()方法。
答案 1 :(得分:-1)
您可以更新通知,但只要应用程序在内存中,您就无法使用相同的通知ID。