So blenden Sie das Benachrichtigungsfeld aus, nachdem Sie in einer Benachrichtigung ein PendingIntent an den Dienst gesendet haben

Alles

Ich schreibe einen Dienst, um den Systemstatus zu aktualisieren, und verwende startForeground, um den Dienst in den Vordergrund zu stellen, und füge ihm auch eine Benachrichtigung hinzu. In der Benachrichtigung verwende ich remoteView, um drei Bilder mit drei OnClickPendingIntent zu haben. Einer von ihnen sendet zurück an den Dienst und führt die Benachrichtigungsaktualisierungscodes aus.

Code zum Erstellen der Benachrichtigung:

 Intent intentApp = new Intent(this,ScreenOffWidgetConfigure.class);
 intentApp.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
 PendingIntent piApp = PendingIntent.getActivity(this, 0, intentApp, 0);

 Intent intentOnOff = new Intent(CV.SERVICE_INTENT_ACTION);
 intentOnOff.putExtra(CV.SERVICEACTION, CV.SERVICEACTION_TOGGLE);
 PendingIntent piOnOff = PendingIntent.getService(this, 0, intentOnOff, 0);

 Intent intentScreenOff = new Intent(CV.SERVICE_INTENT_ACTION);
 intentScreenOff.putExtra(CV.SERVICEACTION, CV.SERVICEACTION_SCREENOFF);
 PendingIntent piScreenOff = PendingIntent.getService(this, 1, intentScreenOff, 0);

 // setup remoteview
 RemoteViews remoteViews = new RemoteViews(getPackageName(), R.layout.layout_notification);
 remoteViews.setOnClickPendingIntent(R.id.image_logo, piApp);
 remoteViews.setOnClickPendingIntent(R.id.image_status, piOnOff);
 remoteViews.setOnClickPendingIntent(R.id.image_screenoff, piScreenOff);

 if(CV.getPrefChargingOn(this) && CV.isPlugged(this))
 {
     remoteViews.setImageViewResource(R.id.image_status,R.drawable.widget_charging_on);
 }
 else
 {
     if(CV.getPrefAutoOnoff(this))
     remoteViews.setImageViewResource(R.id.image_status,R.drawable.widget_on);
     else
     remoteViews.setImageViewResource(R.id.image_status,R.drawable.widget_off);
 }

 // build the notification
 Notification noti = new Notification.Builder(this)
 .setContent(remoteViews)
 .setSmallIcon(R.drawable.ic_launcher)
 .setOngoing(true)
 .build();

 return noti;

Code für die Aktualisierung der Benachrichtigung nach Erhalt der Absicht:

 Notification notify = createNotification();
 final NotificationManager notificationManager = (NotificationManager) getApplicationContext()
                        .getSystemService(getApplicationContext().NOTIFICATION_SERVICE);

 notificationManager.notify(NOTIFICATION_ONGOING, notify);

Meine Frage lautet: Nach dem Aufrufen meiner Aktualisierungsfunktion wird das Benachrichtigungsbild tatsächlich geändert. jedoch,Das Benachrichtigungsfeld ist immer noch da !! Es verschwindet nicht so, wie es zum Starten von Aktivitäten sein sollte.

Gibt es ein Flag, das ich für Benachrichtigungen, pendingIntent oder welche API-Aufrufe setzen kann, nachdem ich die Intent in Service erhalten habe?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage