应用程序已在后台运行时深入链接到应用程序

时间:2014-09-15 21:58:02

标签: android deep-linking

我已经实现了DeeplinkActivity来捕获intent-filter数据方案并打开一个活动。我遇到的问题是应用程序已在后台打开,然后用户单击深层链接以打开主屏幕活动。如果用户按下退出应用程序,它将转到后台运行的内容。我希望它退出应用程序。

我试过这个。

        Intent intent = new Intent(this, LaunchActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 
        startActivity(intent);

但这不起作用。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

我刚刚解决了这个问题。

首先,您需要转到清单,并将launchMode设置为“ singleTask”,这将阻止您的应用完全打开新实例。

第二步,您需要进入接受该意图过滤器的Activity并覆盖此方法

override fun onNewIntent(intent: Intent?) {
    super.onNewIntent(intent)
}

现在通过使用此处的新意图,您将可以访问深层链接,并能够将其路由到应用内所需的位置。

答案 1 :(得分:-1)

发现这个差不多2年的问题,同时面临完全相同的问题...... 可能为时已晚,但对于其他遇到同样问题的人: 我的解决方案是使用应用程序上下文代替当前(活动)上下文。所以第3行看起来像: getApplicationContext().startActivity(intent);

答案 2 :(得分:-1)

实际上有两种方法可以解决您的问题:

在您的活动清单中设置android:launchMode="singleInstance"reference),这是从深层链接调用的。因此,活动始终是其任务的唯一成员。因此,活动不会重新使用已经运行的应用程序中的Backstack中的任何任务。小心使用singleInstance,如果您打开带有深层链接的singleInstance活动,然后从那里导航到另一个活动,然后按回来,您将进入当前活动的父活动,而不是您的singleInstance活动。因此,它以某种方式破坏标准的后导航,你必须处理所有这些特殊情况,这可能会非常烦人。

或者,对于API> = 16,您可以在活动的finishAffinity()方法中使用:onBackPressed()reference),但在这里您必须以某种方式区分,如果应用程序是通过深层链接打开的,否则即使您只想导航回主菜单,它也会关闭您的应用程序。