【发布时间】:2015-12-28 20:41:42
【问题描述】:
我正在使用深层链接打开我的应用,这是意图过滤器:
<intent-filter>
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="myapp.delivery" />
<data android:pathPattern="/.*" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
我们的用例是:
- 用户打开应用,浏览一些餐厅
- 用户点击餐厅(使用餐厅菜单打开 MenuActivity 活动)
- 用户单击菜单类别,例如比萨饼、甜点或汤,这将打开 CategoryActivity。
- 用户单击要添加到购物车的菜我需要向用户发送带有 url 的电子邮件。
我的问题:
(在第 4 步之后)用户单击电子邮件应用程序(比如 gmail 或收件箱应用程序)上的 url,这会提示用户打开我的应用程序或浏览器,如下所示:
当用户点击打开我的应用程序时,会发生 GotEmailActivity 在 gmail 应用程序之上打开的情况,我需要它在我之前打开的应用程序实例之上打开。
正如您在此处看到的,我的应用程序的 2 个实例已打开(第一个应用程序实例和第二个实例在 gmail 之上打开),:
如何在我之前启动的应用中打开点击的链接,而不是在 gmail/inbox 应用之上?
【问题讨论】:
-
您想在清单中修改
android:launchMode。 activity doc -
@zec 遗憾的是它不起作用它打开一个新的活动实例,它不在我的应用程序之上,而是作为它自己的堆栈中的一个独立活动,我尝试使用 android:launchMode 的 singleTask 和 singleInstance 属性
-
@zec 也尝试了 singleTop 似乎涵盖了这个用例,但我认为它只适用于从应用程序内部启动活动而不是深层链接:(,无论如何感谢您的回答!
标签: android android-intent android-activity android-manifest android-lifecycle