Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有导航组件的Android deeplink未按预期工作_Android_Android Architecture Navigation_Android Deep Link - Fatal编程技术网

带有导航组件的Android deeplink未按预期工作

带有导航组件的Android deeplink未按预期工作,android,android-architecture-navigation,android-deep-link,Android,Android Architecture Navigation,Android Deep Link,我希望你们都做得很好 我有一个小问题 我使用的是导航组件,单活动多片段。我对deeplink有一个小问题 我在清单中设置了,还设置了launcherMode=“singleTask” 我已经在导航图中设置了 我已经处理了一部分额外的意图 我的流量是 用户单击忘记密码,填写编辑文本,然后请求deeplink邮件。很好 用户单击电子邮件中的deeplink并选择应用程序,然后自动导航到CreatePasswordFragment(deeplink目标片段)&(我可以在这里处理参数,也可以正常工作

我希望你们都做得很好

我有一个小问题

我使用的是导航组件,单活动多片段。我对deeplink有一个小问题

  • 我在清单中设置了
    ,还设置了launcherMode=“singleTask”

  • 我已经在导航图中设置了

  • 我已经处理了一部分额外的意图

我的流量是

  • 用户单击忘记密码,填写编辑文本,然后请求deeplink邮件。很好
  • 用户单击电子邮件中的deeplink并选择应用程序,然后自动导航到CreatePasswordFragment(deeplink目标片段)&(我可以在这里处理参数,也可以正常工作)
  • 问题是,;有时,若应用程序在后台打开(例如,我请求了邮件,然后按下了home按钮),当我单击deeplink时,运行的是最后一个片段,而不是目标片段CreatePasswordFragment 关于什么可能导致问题的想法

    谢谢

    导航版本:2.2.0

    电子邮件附带的Deeplink

     http://myurl/forgot-password/?key=sodmoq9wwdW1djkssdqMEdqlsp
    
    导航图

     <deepLink android:id="@+id/deepLink"
        app:uri="http://myurl/forgot-password/?key={key}"/>
     <argument
        android:name="key"
        app:argType="string" />
    
    
    
    Android清单

     <activity 
        ...
        android:launchMode="singleTask">
     <nav-graph android:value="@navigation/navigation_main" />
     </activity>`
    
     <intent-filter>
    
         <action android:name="android.intent.action.VIEW" />
    
         <category android:name="android.intent.category.DEFAULT" />
    
         <category android:name="android.intent.category.BROWSABLE"/>
    
         <data android:scheme="http" />
    
         <data android:host="myurl" />
    
         <data android:path="/forgot-password/" />
     </intent-filter>
    
    
    `
    
    反编译清单

     <activity 
        ...
        android:launchMode="singleTask">
     <nav-graph android:value="@navigation/navigation_main" />
     </activity>`
    
     <intent-filter>
    
         <action android:name="android.intent.action.VIEW" />
    
         <category android:name="android.intent.category.DEFAULT" />
    
         <category android:name="android.intent.category.BROWSABLE"/>
    
         <data android:scheme="http" />
    
         <data android:host="myurl" />
    
         <data android:path="/forgot-password/" />
     </intent-filter>
    

    派对有点晚了,但对于未来的参考,请引用Ian Lake(导航组件技术负责人)的回答:

    NavController不会覆盖活动中的方法,因此如果坚持使用android:launchMode=“singleTask”,则需要手动调用此函数

    以下是指向来源的链接:


    您解决了这个问题吗?@mrJoe:没有。我试图通过捕获意图,然后通过调用findNavController().navigate()显式导航到请求的片段来手动处理深度链接,但在此之后,我无法通过按back键或调用navigate()方法从这个新片段导航到另一个片段。“你对此有什么解决办法吗?”@MithatSinanSarı运气好吗?@SoH不幸的是,没有。我们现在手动处理。