แก้ไขป้ายการแจ้งเตือน
จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน
บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ
ตั้งแต่ Android 8.0 (API ระดับ 26) เป็นต้นไป ป้ายการแจ้งเตือนหรือที่เรียกว่าจุดแสดงการแจ้งเตือนจะปรากฏบนไอคอนตัวเปิดแอปเมื่อแอปที่เกี่ยวข้องมีการแจ้งเตือนที่ทำงานอยู่ ผู้ใช้สามารถแตะไอคอนแอปค้างไว้เพื่อแสดงการแจ้งเตือน รวมถึงทางลัดของแอปต่างๆ ดังที่แสดงในรูปที่ 1
จุดเหล่านี้จะปรากฏโดยค่าเริ่มต้นในแอป Launcher ที่รองรับ และแอปของคุณไม่จําเป็นต้องดำเนินการใดๆ อย่างไรก็ตาม อาจมีบางกรณีที่คุณไม่ต้องการให้จุดการแจ้งเตือนปรากฏขึ้น หรือต้องการควบคุมการแจ้งเตือนที่จะปรากฏ
รูปที่ 1 ป้ายแสดงการแจ้งเตือนและเมนูแบบแตะค้างไว้
ปิดใช้ป้าย
ในบางกรณี ป้ายอาจไม่เหมาะกับการแจ้งเตือนของคุณ คุณจึงปิดใช้ป้ายต่อช่องได้โดยเรียกใช้ setShowBadge(false)
ในออบเจ็กต์ NotificationChannel
ตัวอย่างเช่น คุณอาจต้องการปิดใช้ป้ายการแจ้งเตือนในสถานการณ์ต่อไปนี้
- การแจ้งเตือนต่อเนื่อง: การแจ้งเตือนต่อเนื่องส่วนใหญ่ เช่น การปรับแต่งรูปภาพ การควบคุมการเล่นสื่อ หรือคำแนะนำการนำทางปัจจุบัน ไม่ควรใช้เป็นป้าย
- การช่วยเตือนในปฏิทิน: หลีกเลี่ยงการแสดงป้ายกิจกรรมที่เกิดขึ้นในเวลาปัจจุบัน
- เหตุการณ์นาฬิกาหรือการปลุก: หลีกเลี่ยงการแจ้งเตือนแบบป้ายที่เกี่ยวข้องกับการปลุกปัจจุบัน
โค้ดตัวอย่างต่อไปนี้แสดงวิธีซ่อนป้ายสำหรับแชแนลการแจ้งเตือน
Kotlin
val id = "my_channel_01"
val name = getString(R.string.channel_name)
val descriptionText = getString(R.string.channel_description)
val importance = NotificationManager.IMPORTANCE_LOW
val mChannel = NotificationChannel(id, name, importance).apply {
description = descriptionText
setShowBadge(false)
}
val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(mChannel)
Java
String id = "my_channel_01";
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_LOW;
NotificationChannel mChannel = new NotificationChannel(id, name, importance);
mChannel.setDescription(description);
mChannel.setShowBadge(false);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.createNotificationChannel(mChannel);
กำหนดจำนวนการแจ้งเตือนที่กำหนดเอง
โดยค่าเริ่มต้น การแจ้งเตือนแต่ละรายการจะเพิ่มจำนวนที่แสดงในเมนูแตะค้างไว้ ดังที่แสดงในรูปที่ 1 แต่คุณสามารถลบล้างจำนวนนี้สำหรับแอปได้ เช่น การดำเนินการนี้อาจมีประโยชน์หากคุณใช้การแจ้งเตือนเพียงรายการเดียวเพื่อแสดงข้อความใหม่หลายรายการ แต่ต้องการให้การนับแสดงจํานวนข้อความใหม่ทั้งหมด
หากต้องการตั้งค่าหมายเลขที่กำหนดเอง ให้โทรไปที่ setNumber()
ในการแจ้งเตือนดังที่แสดงที่นี่
Kotlin
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
.setContentTitle("New Messages")
.setContentText("You've received 3 new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setNumber(messageCount)
.build()
Java
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
.setContentTitle("New Messages")
.setContentText("You've received 3 new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setNumber(messageCount)
.build();
แก้ไขไอคอนเมนูการแตะค้างไว้ของการแจ้งเตือน
เมนูการแตะค้างไว้จะแสดงไอคอนขนาดใหญ่หรือขนาดเล็กที่เชื่อมโยงกับการแจ้งเตือน (หากมี) โดยค่าเริ่มต้น ระบบจะแสดงไอคอนขนาดใหญ่ แต่คุณสามารถเรียกใช้ Notification.Builder.setBadgeIconType()
และส่งค่าคงที่ BADGE_ICON_SMALL
เพื่อแสดงไอคอนขนาดเล็ก
Kotlin
var notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)
.setContentTitle("New Messages")
.setContentText("You've received 3 new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
.build()
Java
Notification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)
.setContentTitle("New Messages")
.setContentText("You've received 3 new messages.")
.setSmallIcon(R.drawable.ic_notify_status)
.setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)
.build();
ซ่อนทางลัดที่ซ้ำกัน
หากแอปสร้างการแจ้งเตือนที่ซ้ำกับทางลัดแอป คุณสามารถซ่อนทางลัดชั่วคราวขณะที่การแจ้งเตือนทำงานอยู่ได้โดยเรียกใช้ setShortcutId()
ดูโค้ดตัวอย่างเพิ่มเติมที่ใช้การแจ้งเตือนได้ที่แอปตัวอย่าง SocioLite
ตัวอย่างเนื้อหาและโค้ดในหน้าเว็บนี้ขึ้นอยู่กับใบอนุญาตที่อธิบายไว้ในใบอนุญาตการใช้เนื้อหา Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ
อัปเดตล่าสุด 2025-07-27 UTC
[null,null,["อัปเดตล่าสุด 2025-07-27 UTC"],[],[],null,["# Modify a notification badge\n\nStarting with Android 8.0 (API level 26), notification badges---also known as\nnotification dots---appear on a launcher icon when the associated app has an\nactive notification. Users can\ntouch \\& hold the app icon to reveal the notifications, along with any\n[app shortcuts](/guide/topics/ui/shortcuts), as shown in\nfigure 1.\n\nThese dots appear by default in launcher apps that support them, and there's\nnothing your app needs to do. However, there might be situations in which you\ndon't want the to notification dot to appear or you want to control exactly\nwhich notifications appear there.\n\n\n**Figure 1.** Notification badges and the touch \\& hold menu.\n\n\u003cbr /\u003e\n\nDisable badging\n---------------\n\nThere are cases where badges don't make sense for your notifications, so you\ncan disable them on a per-channel basis by calling\n[`setShowBadge(false)`](/reference/android/app/NotificationChannel#setShowBadge(boolean))\non your [`NotificationChannel`](/reference/android/app/NotificationChannel)\nobject.\n\nFor example, you might want to disable notification badges in the following\nsituations:\n\n- Ongoing notifications: most ongoing notifications, such as image processing, media playback controls, or current navigation instructions, don't make sense as a badge.\n- Calendar reminders: avoid badging events occurring at the current time.\n- Clock or alarm events: avoid badging notifications related to current alarms.\n\nThe following sample code demonstrates how to hide badges for\na notification channel: \n\n### Kotlin\n\n```kotlin\nval id = \"my_channel_01\"\nval name = getString(R.string.channel_name)\nval descriptionText = getString(R.string.channel_description)\nval importance = NotificationManager.IMPORTANCE_LOW\nval mChannel = NotificationChannel(id, name, importance).apply {\n description = descriptionText\n setShowBadge(false)\n}\nval notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager\nnotificationManager.createNotificationChannel(mChannel)\n```\n\n### Java\n\n```java\nString id = \"my_channel_01\";\nCharSequence name = getString(R.string.channel_name);\nString description = getString(R.string.channel_description);\nint importance = NotificationManager.IMPORTANCE_LOW;\nNotificationChannel mChannel = new NotificationChannel(id, name, importance);\nmChannel.setDescription(description);\nmChannel.setShowBadge(false);\n\nNotificationManager notificationManager =\n (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);\nnotificationManager.createNotificationChannel(mChannel);\n```\n\nSet custom notification count\n-----------------------------\n\nBy default, each notification increments a number displayed on the touch \\& hold\nmenu, as shown in figure 1, but you can override this number for your app.\nFor example, this might be useful if you're using just one notification to\nrepresent multiple new messages but want the count to represent the\nnumber of total new messages.\n\nTo set a custom number, call\n[`setNumber()`](/reference/androidx/core/app/NotificationCompat.Builder#setNumber(int))\non the notification, as shown here: \n\n### Kotlin\n\n```kotlin\nvar notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)\n .setContentTitle(\"New Messages\")\n .setContentText(\"You've received 3 new messages.\")\n .setSmallIcon(R.drawable.ic_notify_status)\n .setNumber(messageCount)\n .build()\n```\n\n### Java\n\n```java\nNotification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)\n .setContentTitle(\"New Messages\")\n .setContentText(\"You've received 3 new messages.\")\n .setSmallIcon(R.drawable.ic_notify_status)\n .setNumber(messageCount)\n .build();\n```\n\nModify a notification's touch \\& hold menu icon\n-----------------------------------------------\n\nThe touch \\& hold menu displays the large or small icon associated with a\nnotification if available. By default, the system displays the large icon, but\nyou can call\n[`Notification.Builder.setBadgeIconType()`](/reference/androidx/core/app/NotificationCompat.Builder#setBadgeIconType(int))\nand pass in the [`BADGE_ICON_SMALL`](/reference/androidx/core/app/NotificationCompat#BADGE_ICON_SMALL())\nconstant to display the small icon. \n\n### Kotlin\n\n```kotlin\nvar notification = NotificationCompat.Builder(this@MainActivity, CHANNEL_ID)\n .setContentTitle(\"New Messages\")\n .setContentText(\"You've received 3 new messages.\")\n .setSmallIcon(R.drawable.ic_notify_status)\n .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)\n .build()\n```\n\n### Java\n\n```java\nNotification notification = new NotificationCompat.Builder(MainActivity.this, CHANNEL_ID)\n .setContentTitle(\"New Messages\")\n .setContentText(\"You've received 3 new messages.\")\n .setSmallIcon(R.drawable.ic_notify_status)\n .setBadgeIconType(NotificationCompat.BADGE_ICON_SMALL)\n .build();\n```\n\nHide a duplicate shortcut\n-------------------------\n\nIf your app creates a notification that duplicates an [app shortcut](/guide/topics/ui/shortcuts), you can\ntemporarily hide the shortcut while the notification is active by calling\n[`setShortcutId()`](/reference/androidx/core/app/NotificationCompat.Builder#setShortcutId(java.lang.String)).\n\nFor more sample code that uses notifications, see the [SociaLite sample app](https://github.com/android/socialite)."]]