android-“后退”按钮将我带到启动器活动,而不是深度链接器活动
作者:互联网
步骤如下:
>启动我的应用程序,堆栈:[HomeActivity]
>使用深层链接进入Facebook,进入Activity X
>按下返回按钮可返回HomeActivity而不是Facebook
预期
>启动我的应用程序,堆栈:[HomeActivity]
>使用深层链接进入Facebook,进入Activity X
>按返回按钮可返回到Facebook App
当我的应用程序根本没有启动时,我得到了预期的行为.我看到像Instagram这样的其他应用程序确实能够使它正常工作.因此,即使您的应用程序在后台运行,它也带您回到发出深层链接意图的活动.
我的活动有launchMode =“ singleTop”,onBackPressed()没有被覆盖,因此它调用超类实现.
我在这里想得到什么正确吗?
我调试了它,onBackPressed()最终调用了finish(),但是它使我回到了我的应用程序,而不是Facebook.
解决方法:
加
android:taskAffinity=""
到< activity>清单中“深层链接的活动”的代码.
发生的事情是Facebook正在使用Intent.FLAG_ACTIVITY_NEW_TASK启动您的“深层链接活动”(您应该能够通过在onCreate()或onNewIntent()中检查活动中Intent的内容来验证这一点.
如果您的应用程序已经在运行,则Android将您现有的任务置于前台,并在该任务的顶部启动“深层链接的活动”.然后,当您按BACK时,它就完成了“深层链接的活动”,并将您带入现有任务.
Android之所以这样做,是因为您的所有活动都共享相同的taskAffinity,因此当它需要为您的应用创建新任务时,它将首先尝试查找具有相同亲和力的现有任务.
如果您将“深层链接的活动”的taskAffinity设置为空,则这将阻止Android寻找现有任务来启动该活动.它只会创建一个新任务,并将您的“深层链接活动”启动到该新任务中.然后,当您按BACK时,您的活动已完成,任务将为空,因此该任务将完成,并将您带回到任务堆栈中的上一个任务(应为Facebook,因为您的应用已启动)从那里).
标签:activity-stack,android-activity,android-navigation,android,deep-linking 来源: https://codeday.me/bug/20191028/1954416.html