Android Notification 通知訊息
- Android8.0以上一定要設置Channel渠道
- 一般通知
- 進度條通知
- 大圖片通知
- 多行通知
- Github
1.Android8.0以上一定要設置Channel渠道
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(packageName, "Demo", NotificationManager.IMPORTANCE_HIGH)
notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
2.一般通知
val intent = Intent(this, SecondMainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
val notification = NotificationCompat.Builder(this, packageName)
.setContentTitle("通知")
.setContentText("收到一條消息")
.setSmallIcon(R.drawable.logo)
.setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.icon))
.setWhen(System.currentTimeMillis())
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.build()
notificationManager.notify((0..10000).random(), notification)
3.進度條通知
val notification = NotificationCompat.Builder(this, packageName)
.setContentTitle("圖片下載")
.setContentText("下載中")
.setSmallIcon(R.drawable.logo)
.setWhen(System.currentTimeMillis())
.setStyle(
NotificationCompat.BigPictureStyle()
.bigPicture(BitmapFactory.decodeResource(resources, R.drawable.icon))
)
.setProgress(100, 0, false)
thread {
for (i in 0..100 step 5) {
notification.setProgress(100, i, false)
notificationManager.notify(0, notification.build())
Thread.sleep(250)
}
notification.setProgress(0, 0, false)
.setContentText("下載完成")
notificationManager.notify(0, notification.build())
Thread.sleep(1000)
notificationManager.cancel(0)
}
notificationManager.notify(0, notification.build())
4.大圖片通知
val intent = Intent(this, SecondMainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
val notification = NotificationCompat.Builder(this, packageName)
.setContentTitle("大圖通知")
.setContentText("收到一條消息")
.setSmallIcon(R.drawable.logo)
.setWhen(System.currentTimeMillis())
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.setStyle(
NotificationCompat.BigPictureStyle()
.bigPicture(BitmapFactory.decodeResource(resources, R.drawable.icon))
)
.build()
notificationManager.notify((0..10000).random(), notification)
5.多行通知
val intent = Intent(this, SecondMainActivity::class.java)
val pendingIntent = PendingIntent.getActivity(this, 0, intent, 0)
val messageList = ArrayList<String>();
messageList.add("第一條訊息");
messageList.add("第二條訊息");
messageList.add("第三條訊息");
messageList.add("第四條訊息");
messageList.add("第五條訊息");
val inboxStyle = NotificationCompat.InboxStyle();
messageList.forEach {
inboxStyle.addLine(it);
}
val notification = NotificationCompat.Builder(this, packageName)
.setContentTitle("多行通知")
.setWhen(System.currentTimeMillis())
.setSmallIcon(R.drawable.logo)
.setLargeIcon(BitmapFactory.decodeResource(resources, R.drawable.icon))
.setAutoCancel(true)
.setContentIntent(pendingIntent)
.setStyle(inboxStyle)
.build()
notificationManager.notify((0..10000).random(), notification)
6.Github
Github