自适应横幅在Android 11(SDK版本30)中已被弃用,替代方案是使用新的横幅通知样式。以下是一个使用Kotlin的示例代码,演示如何创建和显示横幅通知:
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.graphics.Color
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import androidx.core.app.NotificationCompat
import androidx.core.app.NotificationManagerCompat
class MainActivity : AppCompatActivity() {
private val CHANNEL_ID = "my_channel"
private val NOTIFICATION_ID = 1
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
createNotificationChannel()
val notificationBuilder = NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle("My Notification")
.setContentText("This is a notification")
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setFullScreenIntent(null, true)
with(NotificationManagerCompat.from(this)) {
notify(NOTIFICATION_ID, notificationBuilder.build())
}
}
private fun createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
CHANNEL_ID,
"My Channel",
NotificationManager.IMPORTANCE_DEFAULT
).apply {
description = "This is my notification channel"
enableLights(true)
lightColor = Color.RED
enableVibration(true)
}
val notificationManager =
getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
notificationManager.createNotificationChannel(channel)
}
}
}
上述代码中,我们首先创建了一个NotificationChannel
,然后使用NotificationCompat.Builder
构建了一个横幅通知。在createNotificationChannel()
方法中,我们检查Android版本是否大于等于Android O(SDK版本26),如果是,则创建一个通知渠道。最后,我们使用NotificationManagerCompat
的notify()
方法显示通知。
请注意,横幅通知仅在用户设备上启用了横幅通知权限时才会显示。