Skip to content

Commit bf728a9

Browse files
committed
feat : notification 클릭 시 missionFragment로 이동
1 parent e51eb47 commit bf728a9

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

presentation/src/main/java/com/stop/MainActivity.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ class MainActivity : AppCompatActivity() {
3333

3434
navHostFragment.navController.graph = graph
3535
}
36+
37+
intent?.extras?.getInt("MISSION_CODE")?.let {
38+
val navHostFragment =
39+
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
40+
val inflater = navHostFragment.navController.navInflater
41+
val graph = inflater.inflate(R.navigation.nav_graph)
42+
graph.setStartDestination(R.id.missionFragment)
43+
44+
navHostFragment.navController.graph = graph
45+
}
3646
}
3747

3848
override fun onCreate(savedInstanceState: Bundle?) {

presentation/src/main/java/com/stop/ui/mission/MissionWorker.kt

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package com.stop.ui.mission
33
import android.Manifest
44
import android.app.NotificationChannel
55
import android.app.NotificationManager
6+
import android.app.PendingIntent
67
import android.content.Context
8+
import android.content.Intent
79
import android.content.pm.PackageManager
810
import android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION
911
import android.os.Build
@@ -17,6 +19,7 @@ import androidx.work.ForegroundInfo
1719
import androidx.work.WorkManager
1820
import androidx.work.WorkerParameters
1921
import com.google.android.gms.location.*
22+
import com.stop.MainActivity
2023
import com.stop.R
2124
import com.stop.isMoreThanOreo
2225
import com.stop.model.Location
@@ -81,20 +84,20 @@ class MissionWorker @AssistedInject constructor(
8184
private fun createForegroundInfo(): ForegroundInfo {
8285
val id = applicationContext.getString(R.string.mission_notification_channel_id)
8386
val title = applicationContext.getString(R.string.mission_notification_title)
84-
val cancel = applicationContext.getString(R.string.alarm_cancel_text)
85-
86-
val intent = WorkManager.getInstance(applicationContext)
87-
.createCancelPendingIntent(getId())
8887

8988
createChannel(id)
9089

90+
val pendingIntent = PendingIntent.getActivity(applicationContext, MISSION_CODE, Intent(applicationContext, MainActivity::class.java).apply {
91+
putExtra("MISSION_CODE", MISSION_CODE)
92+
}, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
93+
9194
val notification = NotificationCompat.Builder(applicationContext, id)
9295
.setContentTitle(title)
9396
.setTicker(title)
9497
.setContentText(NOTIFICATION_CONTENT)
9598
.setSmallIcon(R.mipmap.ic_bus)
9699
.setOngoing(true) // 사용자가 지우지 못하도록 막음
97-
.addAction(android.R.drawable.ic_delete, cancel, intent)
100+
.setContentIntent(pendingIntent)
98101
.build()
99102

100103
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
@@ -121,6 +124,7 @@ class MissionWorker @AssistedInject constructor(
121124
private const val NOTIFICATION_CONTENT = "사용자의 위치를 추적중입니다."
122125
private var NUM = 0
123126
private const val INTERVAL_UNIT = 1000L
127+
private const val MISSION_CODE = 88
124128
}
125129

126130
}

0 commit comments

Comments
 (0)