按下通知时将 Android 应用置于前台

Puttin an Android app to foreground when a notification is pressed

提问人:steinarey 提问时间:11/1/2023 最后编辑:David Wassersteinarey 更新时间:11/1/2023 访问量:35

问:

我在应用程序的某个位置启动一项服务,并从那里创建通知。我将应用程序置于后台,然后单击通知

我想要发生的情况:应用程序以与它所处的状态相同的状态进入前台,就像我按下设备上的“查看所有后台应用程序”按钮并选择它一样。

实际发生的情况:我转到应用程序的主屏幕。

我梳理了一堆线程并尝试了不同的东西。每次我更改任何内容时,当我按下通知时,应用程序根本无法打开。

class TestService : Service() {
    private lateinit var notificationBuilder: NotificationCompat.Builder

    ...

    private fun createNotification(): Notification {
        ...
        notificationBuilder = NotificationCompat.Builder(this, channelId)

        notificationBuilder
            .setSmallIcon(R.drawable.ic_notif)
            .setContentTitle(titleText)
            .setContentText(getFormattedTime())
            .setOnlyAlertOnce(true)
            .setContentIntent(PendingIntent.getActivity(this, 1, Intent(this, MainActivity::class.java), PendingIntent.FLAG_IMMUTABLE))
            .setOngoing(true)

        ...

        return notificationBuilder.build()
    }

android 意图 android-notifications

评论


答:

0赞 David Wasser 11/1/2023 #1

您只需要改用启动 Intent,如下所示:

val intent = getPackageManager().
                getLaunchIntentForPackage("my.package.name")

然后

.setContentIntent(PendingIntent.getActivity(this, 1, intent, PendingIntent.FLAG_IMMUTABLE))
        

启动 Intent 设置了一些额外的标志,这些标志会导致任务简单地被带到前台(如果它已经在运行)。这与用户从主屏幕点击应用程序图标时的效果相同。