Android 中的通知示例
通知是一种消息、警报或应用程序的状态(可能在后台运行),在 Android 的 UI 元素中可见或可用。此应用程序可能在后台运行,但用户未使用。通知的目的是通知用户有关由用户或系统在应用程序中启动的进程。本文可以帮助那些努力为开发目的创建通知的人。
通知可以是各种格式和设计,具体取决于开发人员。一般而言,您必须目睹这四种类型的通知:
- 状态栏通知(显示在与当前时间、电池百分比相同的布局中)
- 通知抽屉通知(出现在下拉菜单中)
- 提醒通知(出现在覆盖屏幕上,例如:Whatsapp 通知、OTP 消息)
- 锁屏通知(我猜你知道)
在本文中,我们将讨论如何在Kotlin中生成通知。
分步实施
第 1 步:创建一个新项目
要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。请注意,选择Kotlin作为编程语言。
第 2 步:使用 activity_main.xml 文件
转到activity_main.xml文件并参考以下代码。在这一步中,我们将设计我们的布局页面。在这里,我们将使用 RelativeLayout 从 Kotlin 文件中获取 Scroll View。下面是activity_main.xml文件的代码。
XML
XML
Kotlin
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.widget.Button
import android.widget.RemoteViews
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
// declaring variables
lateinit var notificationManager: NotificationManager
lateinit var notificationChannel: NotificationChannel
lateinit var builder: Notification.Builder
private val channelId = "i.apps.notifications"
private val description = "Test notification"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// accessing button
val btn = findViewById
第 3 步:创建一个新的空活动
Reference article: How to Create Constructor, Getter/Setter Methods and New Activity in Android Studio using Shortcuts?
将活动命名为afterNotification 。当有人点击通知时,此活动将在我们的应用程序中打开,用户将被重定向到此页面。下面是activity_after_notification.xml文件的代码。
XML
Note 1: Without configuring Notification Channels, you cannot build notification for applications with Android API >=26. For them generating a notification channel is mandatory. Apps with API<26 don’t need notification channels they just need notification builder. Each channel is supposed to have a particular behavior that will be applicable to all the notifications which are a part of it. Every channel will, therefore, have a Channel ID which basically will act as a unique identifier for this Channel which will be useful if the user wants to differentiate a particular notification channel. In contrast, the Notification builder provides a convenient way to set the various fields of a Notification and generate content views using the platform’s notification layout template but is not able to target a particular notification channel.
Note 2: If you have referred any other documentation or any other blog before this one, you might have noticed them appealing to implement the following dependency“com.android.support:support-compat:28.0.0”. What I’ve personally experienced is that there’s no need to implement it, things go far and good without this also.
第 5 步:使用 MainActivity.kt 文件
转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。
科特林
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.app.PendingIntent
import android.content.Context
import android.content.Intent
import android.graphics.BitmapFactory
import android.graphics.Color
import android.os.Build
import android.os.Bundle
import android.widget.Button
import android.widget.RemoteViews
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
// declaring variables
lateinit var notificationManager: NotificationManager
lateinit var notificationChannel: NotificationChannel
lateinit var builder: Notification.Builder
private val channelId = "i.apps.notifications"
private val description = "Test notification"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// accessing button
val btn = findViewById
有了这个,我们现在已经成功地为我们的应用程序创建了一个“通知”。请注意,上面代码中列出的参数是必需的,缺少任何单个参数都可能导致应用程序崩溃或无法启动。内容标题、内容文本、小图标是可自定义的参数,但也是必需的。可以根据需要更改它们的值。