我正在根据使用BroadcastReceiver启动的Worker中的情况向用户发送每日通知。在Worker
中,我只有context
用于发送通知。
NotificationCompat.Builder(context, CHANNEL_ID).apply {
setContentTitle(...)
setContentText(...)
setContentIntent(pendingIntent(context))
}.build()
如何创建PendingIntent
以使用导航组件启动特定片段?
我尝试过:
fun pendingIntent(context: Context): PendingIntent {
val navController = NavController(context.applicationContext)
navController.setGraph(R.navigation.your_navigation)
return navController.createDeepLink()
.setDestination(R.id.yourFragment)
.createPendingIntent()
}
但是我得到以下例外:
Caused by: java.lang.RuntimeException: Exception inflating package.name:navigation/your_navigation line 7
at androidx.navigation.NavInflater.inflate(NavInflater.java:90)
at androidx.navigation.NavController.setGraph(NavController.java:425)
at androidx.navigation.NavController.setGraph(NavController.java:407)
at
......
at package.name.Worker.doWork(Worker.kt:15)
at androidx.work.Worker$1.run(Worker.java:85)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: java.lang.IllegalStateException: Could not find Navigator with name "fragment". You must call NavController.addNavigator() for each navigation type.
at androidx.navigation.NavigatorProvider.getNavigator(NavigatorProvider.java:98)
at androidx.navigation.NavInflater.inflate(NavInflater.java:100)
at androidx.navigation.NavInflater.inflate(NavInflater.java:132)
at androidx.navigation.NavInflater.inflate(NavInflater.java:81)
at androidx.navigation.NavController.setGraph(NavController.java:425)
at androidx.navigation.NavController.setGraph(NavController.java:407)
at package.name.NotificationKt.pendingIntent(Notification.kt:57)
at package.name.buildNotificationFor(Notification.kt:50)
at package.name.showNotificationFor(Notification.kt:22)
at package.name.doWork(Worker.kt:15)
at androidx.work.Worker$1.run(Worker.java:85)
根据Create an explicit deep link documentation,您应该使用NavDeepLinkBuilder
类:
NavDeepLinkBuilder