如何从通知中打开 Jetpack 导航片段?

How to open Jetpack Navigation Fragment from Notification?

我在我的项目中使用 Jetpack Navigation,下图描述了我的导航。在我的应用程序中 Home Fragment 是我的 NavHostFragment,我在 Fragment A 中使用前台服务。当我从 Home Fragment 导航到 Fragment A 并关闭应用程序或最小化前台服务 运行 并发出通知时。当我按下通知 Home fragment 打开但我希望 Fragment A 将打开并且所有返回堆栈将被保存。我在通知中使用 MainActivity 作为 PendingIntent,我的所有导航片段都在其中工作。

找了半天,终于找到解决办法了。在这种情况下,将使用 Deeplinking。并将 PendingIntentMainActivity 更改为您的目的地 FragmentA

Source Help

nav_graph.xml

 <fragment
        android:id="@+id/fragmentA"
        android:name="com.example.FragmentA"
        android:label="Fragment A"
        tools:layout="@layout/fragment_a">
       
        <action
            .../>
        
        <deepLink
            android:id="@+id/deepLink"
            app:uri="www.example.com" />
    </fragment>

AndroidManifest.xml

<application
        ...>
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <nav-graph android:value="@navigation/nav_graph"/>
        </activity>
    </application>

PendingIntent

val pendingIntent = NavDeepLinkBuilder(context)
                .setGraph(R.navigation.nav_graph)
                .setDestination(R.id.fragment_a)
                .createPendingIntent()