从通知中恢复后台应用

时间:2019-03-08 08:55:08

标签: android android-intent kotlin notifications

我在后台运行应用程序时遇到处理通知的问题。当前,当我在单击通知后将应用程序置于后台时,它将启动清单中定义的第一个活动(在我的情况下为LoginActivity)。如果它正在运行,我希望它可以将其他活动带到前台。

这是我在清单中的活动声明

    <activity
        android:name=".features.login.LoginActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
    <activity
        android:name="co.blastlab.expo.features.event.EventActivity"
        android:launchMode="singleTop"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar"/>

在下面,我有我的sendNotification方法。

private fun sendNotification(remoteMessage: RemoteMessage) {
    val notification = remoteMessage.notification
    val intent = Intent(this, EventActivity::class.java)
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
    val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT)

    val defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)
    val notificationBuilder = NotificationCompat.Builder(this, defaultChannel)
            .setLargeIcon(BitmapFactory.decodeResource(resources, R.mipmap.launcher_48dp))
            .setSmallIcon(R.drawable.icon)
            .setContentTitle(notification!!.title)
            .setContentText(notification.body)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setChannelId(defaultChannel)
            .setContentIntent(pendingIntent)

    val notificationManager = getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager
    notificationManager.notify(0, notificationBuilder.build())
}

我不知道下一步该怎么做。

0 个答案:

没有答案