Setelah memutakhirkan proyek saya ke Android O
buildToolsVersion "26.0.1"
Lint di Android Studio menunjukkan peringatan yang tidak berlaku untuk metode pembuat notifikasi ikuti:
new NotificationCompat.Builder(context)
Masalahnya adalah: Pengembang Android memperbarui Dokumentasi mereka yang menggambarkan NotificationChannel untuk mendukung notifikasi di Android O, dan memberi kami potongan, namun dengan peringatan usang yang sama:
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();
Pertanyaan saya: Apakah ada solusi lain untuk membangun notifikasi, dan masih mendukung Android O?
Solusi yang saya temukan adalah untuk melewatkan ID saluran sebagai parameter dalam konstruktor Notification.Builder. Tetapi solusi ini tidak bisa digunakan kembali.
new Notification.Builder(MainActivity.this, "channel_id")
android
notifications
android-notifications
GuilhermeFGL
sumber
sumber
notificationBuild.setChannelId("channel_id")
. Dalam kasus saya solusi terakhir ini lebih dapat digunakan kembali karena sayaNotificationCompat.Builder
digunakan kembali dalam beberapa metode, menghemat parameter untuk ikon, suara dan bergetar.Jawaban:
Disebutkan dalam dokumentasi bahwa metode pembangun
NotificationCompat.Builder(Context context)
telah ditinggalkan. Dan kita harus menggunakan konstruktor yang memilikichannelId
parameter:Dokumentasi NotificationCompat.Builder:
Pemberitahuan. Dokumentasi Pembuat:
Jika Anda ingin menggunakan kembali seter builder, Anda bisa membuat builder dengan
channelId
, dan meneruskan builder itu ke metode helper dan mengatur pengaturan yang Anda inginkan dalam metode itu.sumber
Notification.Builder(context)
solusi di sesi NotificationChannel. Tapi yah, setidaknya Anda menemukan pos yang memberitahukan ini sudah usang =)NotificationCompat.Builder(Context context)
, dan kemudian menetapkan saluran seperti:builder.setChannelId(String channelId)
Berikut adalah kode yang berfungsi untuk semua versi android pada API LEVEL 26+ dengan kompatibilitas ke belakang.
sumber
.setPriority(Notification.PRIORITY_MAX)
lain gunakan kode yang diperbarui untuk 26 API. `Panggil konstruktor 2-arg: Untuk kompatibilitas dengan Android O, panggil support-v4
NotificationCompat.Builder(Context context, String channelId)
. Saat berjalan di Android N atau sebelumnya,channelId
akan diabaikan. Saat berjalan di Android O, buat jugaNotificationChannel
dengan yang samachannelId
.Kode sampel kedaluwarsa: Kode sampel pada beberapa halaman JavaDoc seperti Notification.Builder calling
new Notification.Builder(mContext)
sudah kedaluwarsa.Konstruktor usang :
Notification.Builder(Context context)
dan v4NotificationCompat.Builder(Context context)
tidak digunakan lagiNotification[Compat].Builder(Context context, String channelId)
. (Lihat Notification.Builder (android.content.Context) dan v4 NotificationCompat.Builder (Konteks konteks) .)Kelas usang : Seluruh kelas v7
NotificationCompat.Builder
sudah usang. (Lihat v7 NotificationCompat.Builder .) Sebelumnya, v7NotificationCompat.Builder
diperlukan untuk mendukungNotificationCompat.MediaStyle
. Di Android O, ada v4NotificationCompat.MediaStyle
di perpustakaan media-compat 'sandroid.support.v4.media
paket. Gunakan yang itu jika Anda perluMediaStyle
.API 14+: Di Pustaka Dukungan mulai 26.0.0 dan lebih tinggi, paket support-v4 dan support-v7 keduanya mendukung tingkat API minimum 14. Nama v # adalah historis.
Lihat Revisi Perpustakaan Dukungan Terbaru .
sumber
Alih-alih memeriksa
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O
sebanyak mungkin jawaban yang disarankan, ada cara yang sedikit lebih sederhana -Tambahkan baris berikut ke
application
bagian file AndroidManifest.xml seperti yang dijelaskan dalam Aplikasi Menyiapkan Firebase Cloud Messaging Client Client di Android doc:Kemudian tambahkan baris dengan nama saluran ke file nilai / strings.xml :
Setelah itu Anda akan dapat menggunakan versi baru NotificationCompat.Builder konstruktor dengan 2 parameter (karena konstruktor lama dengan 1 parameter telah ditinggalkan di Android Oreo):
sumber
Berikut adalah contoh kode, yang berfungsi di Android Oreo dan kurang dari Oreo.
sumber
Sampel sederhana
sumber
Kode yang benar adalah:
dengan dependensi 26.0.1 dan dependensi baru yang diperbarui seperti 28.0.0.
Beberapa pengguna menggunakan kode ini dalam bentuk ini:
Jadi Logika adalah apa yang Metode Anda akan mendeklarasikan atau initilize maka metode yang sama di sisi Kanan akan digunakan untuk Alokasi. jika di Leftside = Anda akan menggunakan beberapa metode maka metode yang sama akan digunakan di sisi kanan = untuk Alokasi dengan yang baru.
Coba kode ini ... Ini pasti akan berhasil
sumber
Konstruktor ini sudah tidak digunakan lagi di API level 26.1.0. gunakan NotificationCompat.Builder (Konteks, String) sebagai gantinya. Semua Notifikasi yang diposkan harus mencantumkan Id NotificationChannel.
sumber
sumber