From 467f9221d7983056372bc26fa515670a47eb7f8a Mon Sep 17 00:00:00 2001 From: Matte23 Date: Fri, 4 Oct 2019 19:40:22 +0200 Subject: [PATCH] Add MainActivity to activities stack when opening a notification --- .../underdesk/circolapp/AlarmBroadcastReceiver.kt | 14 ++++++++++---- .../net/underdesk/circolapp/works/PollWork.kt | 15 +++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/net/underdesk/circolapp/AlarmBroadcastReceiver.kt b/app/src/main/java/net/underdesk/circolapp/AlarmBroadcastReceiver.kt index bb26d92..91d0ff8 100644 --- a/app/src/main/java/net/underdesk/circolapp/AlarmBroadcastReceiver.kt +++ b/app/src/main/java/net/underdesk/circolapp/AlarmBroadcastReceiver.kt @@ -28,6 +28,7 @@ import android.net.Uri import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat +import androidx.core.app.TaskStackBuilder import net.underdesk.circolapp.data.AppDatabase import net.underdesk.circolapp.data.Circular @@ -58,13 +59,18 @@ class AlarmBroadcastReceiver : BroadcastReceiver() { } private fun createNotification(context: Context, circular: Circular) { - val intent = Intent(Intent.ACTION_VIEW) - intent.setDataAndType(Uri.parse(circular.url), "application/pdf").apply { + val mainIntent = Intent(context, MainActivity::class.java) + val viewIntent = Intent(Intent.ACTION_VIEW) + viewIntent.setDataAndType(Uri.parse(circular.url), "application/pdf").apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } - val pendingIntent: PendingIntent = - PendingIntent.getActivity(context, 0, intent, 0) + val taskStackBuilder = TaskStackBuilder.create(context) + taskStackBuilder.addParentStack(MainActivity::class.java) + taskStackBuilder.addNextIntent(mainIntent) + taskStackBuilder.addNextIntent(viewIntent) + + val pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT) val builder = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) diff --git a/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt b/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt index 0526d18..185d0da 100644 --- a/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt +++ b/app/src/main/java/net/underdesk/circolapp/works/PollWork.kt @@ -27,8 +27,10 @@ import android.net.Uri import android.os.Build import androidx.core.app.NotificationCompat import androidx.core.app.NotificationManagerCompat +import androidx.core.app.TaskStackBuilder import androidx.preference.PreferenceManager import androidx.work.* +import net.underdesk.circolapp.MainActivity import net.underdesk.circolapp.R import net.underdesk.circolapp.data.AppDatabase import net.underdesk.circolapp.data.Circular @@ -132,13 +134,18 @@ class PollWork(appContext: Context, workerParams: WorkerParameters) : } private fun createNotification(circular: Circular) { - val intent = Intent(Intent.ACTION_VIEW) - intent.setDataAndType(Uri.parse(circular.url), "application/pdf").apply { + val mainIntent = Intent(applicationContext, MainActivity::class.java) + val viewIntent = Intent(Intent.ACTION_VIEW) + viewIntent.setDataAndType(Uri.parse(circular.url), "application/pdf").apply { flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK } - val pendingIntent: PendingIntent = - PendingIntent.getActivity(applicationContext, 0, intent, 0) + val taskStackBuilder = TaskStackBuilder.create(applicationContext) + taskStackBuilder.addParentStack(MainActivity::class.java) + taskStackBuilder.addNextIntent(mainIntent) + taskStackBuilder.addNextIntent(viewIntent) + + val pendingIntent = taskStackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT) val builder = NotificationCompat.Builder(applicationContext, CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification)