2013-09-04 8 views
14

Ich habe eine Benachrichtigung, dass ich versuche, den gleichen Notification Builder zu aktualisieren, aber es gibt keine Möglichkeit, die Schaltflächen zu löschen, Sie können nur addAction aufrufen. Wenn Sie nicht den gleichen Builder verwenden, wird die Benachrichtigung blinkend angezeigt, was unerwünscht ist. Gibt es dafür Lösungen? Ich verwende NotificationCompat von der Support-Bibliothek v4.Ändern der Aktionsschaltflächen für eine Benachrichtigung

+0

Ich bin auch auf der Suche nach einer Lösung für diesen, jeden Fortschritt auf Ihr Problem? –

+0

Könnten Sie uns ein bisschen mehr Informationen geben? Was genau hast du vor, was hast du getan? – Paramone

Antwort

0

Sie haben zwei Möglichkeiten, das zu erreichen:

  1. ein eigenes Layout verwenden (nur das Design der ursprünglichen Benachrichtigung kopieren, wenn Sie möchten), und diese dann in einem Remoteview verwenden und nur Ansichten sichtbar machen oder ausblenden Sie. Mit remoteView.setViewVisibility(...) zum Beispiel ... Oder ändern Sie den Text der Schaltflächen ...
  2. Verwenden Sie Reflektion, um die Builder-Aktionen zu löschen. Funktionieren würde, wie folgt vor:

    try { 
        //Use reflection to remove all old actions 
        Field f = mNotificationBuilder.getClass().getDeclaredField("mActions"); 
        f.setAccessible(true); 
        f.set(mNotificationBuilder, new ArrayList<>()); 
    } 
    catch (NoSuchFieldException e) {} 
    catch (IllegalAccessException e) {} 
    
4
notificationBuilder.mActions.clear(); 

Es ist eigentlich public ArrayList<Action>, so dass Sie tun können whataver Sie es wollen.