我在应用程序中的某个位置启动一项服务,并从那里创建通知.我将应用程序放到后台,然后点击通知

我希望发生的事情:应用程序以与其相同的状态进入前台,就像我按下了设备上的"查看所有后台应用程序"按钮并将其选中一样.

实际情况:我进入应用程序的主屏幕.

我梳理了一堆线索,try 了不同的方法.每次我更改任何东西,当我按下通知时,应用程序根本不会打开.

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()
    }

推荐答案

你只需要使用launch 100,就像这样:

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

然后

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

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

Android相关问答推荐

列表的可变状态未正确更新

关于BLE扫描工作原理的说明

格雷德的两个星号是什么意思?非路径

try 用Jetpack Compose理解视图模型和导航

用于小部件泄漏警告的伙伴对象中的Kotlin Lateinit

在Android Studio中,如何在BuildSrc Dependenices Kotlin文件中指定时标记与旧版本的依赖关系

从安卓S原生库的资源中读取json文件

OverridePendingTransition已弃用,我该怎么办?

可以';t将数据插入房间数据库

expo 上的 socket.io 无法从 Android 连接

如何禁用自动登录 google play games services android unity?

面向Jetpack Compose的可组合放置问题

Android 访问任意公共目录

Android:使用依赖项 ViewModelProviderFactory 初始化 ViewModel 的正确方法

如何在 Android 的 ViewModel 中使用 LiveData

我该怎么做文本计时器

在移动设备上看到时如何增加 PasswordField 文本?

前台服务通知需要几秒钟才能显示

firebase-messaging和firebase-inappmessaging-display之间有什么区别?

在jetpack compose中看不到圆角