NotificationCompat.Builder in Android O veraltet
Nach der Aktualisierung mein Projekt zu Android O
buildToolsVersion "26.0.1"
Flusen in Android Studio zeigt eine deprecated-Warnung für die Folgen notification-Builders-Methode:
new NotificationCompat.Builder(context)
Das problem ist: Android-Entwickler aktualisieren Ihre Dokumentation beschreibt NotificationChannel zur Unterstützung von Benachrichtigungen in Android O, und uns ein snippet, noch mit den gleichen deprecated Warnung:
Notification notification = new Notification.Builder(MainActivity.this)
.setContentTitle("New Message")
.setContentText("You've received new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setChannelId(CHANNEL_ID)
.build();
Meine Frage: Ist es irgendeine andere Lösung für die Gebäude-Benachrichtigung, und immer noch unterstützt Android O?
Einer Lösung, die ich gefunden ist, an der Kanal-ID als parameter in der Mitteilung.Generator-Konstruktor. Aber diese Lösung ist nicht genau wiederverwendbar.
new Notification.Builder(MainActivity.this, "channel_id")
InformationsquelleAutor der Frage GuilhermeFGL | 2017-08-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es in der Dokumentation erwähnt, dass der Bauherr Methode
NotificationCompat.Builder(Context context)
ist veraltet. Und wir müssen, verwenden Sie den Konstruktor, der hat diechannelId
parameter:https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html
https://developer.android.com/reference/android/app/Notification.Builder.html
Wenn Sie wiederverwenden möchten builder setter erstellen, können Sie den generator mit der channelId, und übergeben Sie die builder eine helper-Methode, und legen Sie Ihre bevorzugten Einstellungen in dieser Methode.
InformationsquelleAutor der Antwort Bob
Hier arbeitet-code für alle android-Versionen ab API LEVEL 26+ mit der Abwärtskompatibilität.
InformationsquelleAutor der Antwort Aks4125
Rufen Sie die 2-arg-Konstruktor: Für die Kompatibilität mit Android-O, rufen Sie die support-v4
NotificationCompat.Builder(Context context, String channelId)
. Beim laufen auf Android N oder früher, diechannelId
werden ignoriert. Beim laufen auf Android-O, erstellen Sie auch eineNotificationChannel
mit der gleichenchannelId
.Out-of-date Beispielcode: Den Beispiel-code auf mehrere JavaDoc-Seiten wie - Benachrichtigung.Generator aufrufen
new Notification.Builder(mContext)
ist veraltet.Deprecated-Konstruktoren:
Notification.Builder(Context context)
und v4NotificationCompat.Builder(Context context)
sind veraltet, zu Gunsten derNotification[Compat].Builder(Context context, String channelId)
. (Siehe - Benachrichtigung.Generator(android.Inhalt.Kontext) und v4 NotificationCompat.Generator(Context context).)Veraltet Klasse: Die gesamte Klasse v7
NotificationCompat.Builder
ist veraltet. (Siehe v7 NotificationCompat.Generator.) Zuvor v7NotificationCompat.Builder
nötig war, um UnterstützungNotificationCompat.MediaStyle
. Im Android-O, es ist ein v4NotificationCompat.MediaStyle
im media-compat-Bibliothek'sandroid.support.v4.media
Paket. Verwenden Sie, dass man, wenn Sie brauchenMediaStyle
.API 14+: In Support Library von 26.0.0 und höher, die support-v4 und-support-v7-Pakete unterstützen ein minimum API level 14. Die v# Namen sind historisch.
Sehen Den Letzten Support Library Revisionen.
InformationsquelleAutor der Antwort Jerry101
Statt Kontrolle für
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
so viele Antworten vorschlagen, es gibt einen etwas einfacheren Weg -Fügen Sie die folgende Zeile, um die
application
Abschnitt AndroidManifest.xml - Datei, wie in der Einrichten einer Feuerstellung Cloud-Messaging-Client-App auf Android doc:Dann fügen Sie eine Zeile mit den Namen des Kanals ein, um die values/strings.xml Datei:
Danach werden Sie in der Lage, verwenden Sie die neue version von NotificationCompat.Generator Konstruktor mit 2 Parametern (da der alte Konstruktor mit 1 parameter wurde als veraltet markiert in Android Oreo):
InformationsquelleAutor der Antwort Alexander Farber
Hier ist der Beispielcode, welche im Android Oreo und weniger als Oreo.
InformationsquelleAutor der Antwort Arpit
Einfaches Beispiel
InformationsquelleAutor der Antwort Mehul
Dieser Konstruktor wurde als veraltet markiert in der API-Ebene 26.1.0.
verwenden NotificationCompat.Generator(Context, String) statt. Alle gesendeten Benachrichtigungen angeben müssen, eine NotificationChannel Id.
InformationsquelleAutor der Antwort Sandeep Singh
Rechts code :
mit Abhängigkeit 26.0.1 und neue Abhängigkeiten wie 28.0.0.
Einige Benutzer benutzen diesen code in der form :
Also Logik ist, dass die Methode, die Sie erklären oder initilize dann die gleiche methode auf der Rechten Seite wird die Verwendung für die Allokation. wenn in der linken Seite von = verwenden Sie eine Methode, dann die gleiche Methode verwenden, in der rechten Seite von = für die Zuweisung mit new.
Versuchen, diesen code...Es wird sicher funktionieren
InformationsquelleAutor der Antwort Pradeep Sheoran