首页 > 解决方案 > 在活动处于前台时接收明确的意图

问题描述

我的应用程序有一项活动和一项服务。该服务启动一个前台通知,该通知有一个操作按钮,在某些情况下需要告诉活动做一些事情,而不仅仅是回到前面。它使用 Extras 来表明这一点。

我的问题是我找不到任何关于如何接收显式意图的文档,除了通过传递给onCreate()它的“捆绑包”,通常不会调用它,因为可能已经创建了活动。

你如何在 onCreate() 之后收到一个意图?

通知代码片段:

    val actionIntent = Intent(this, MainActivity::class.java)
    actionIntent.action = actionText
    actionIntent.flags = Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP
    val pendingActionIntent: PendingIntent = PendingIntent.getActivity(this, 0, actionIntent, 0)
    
    val actionCancel: NotificationCompat.Action = NotificationCompat.Action.Builder(R.drawable.ic_cancel_black_24dp,
                                                                                    actionText,
                                                                                    pendingActionIntent).build()
    
    val notificationBuilder: NotificationCompat.Builder = NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID)
            .setContentTitle(getText(R.string.notification_title))
            .setSmallIcon(R.drawable.ic_logo_24dp)
            .setContentIntent(pendingIntent)
            .setOnlyAlertOnce(true)
            .addAction(actionCancel)
            .setContentText(text)
    
    startForeground(ONGOING_NOTIFICATION_ID, notificationBuilder.build())

标签: androidandroid-intentandroid-serviceandroid-notificationsandroid-pendingintent

解决方案


覆盖onNewIntent()。如果活动已经存在,并且Intent正在将其带回前台,则将其Intent传递给onNewIntent().


推荐阅读