首页 > 解决方案 > 从深层链接开始活动,并从最新运行的活动中恢复

问题描述

我正在处理我的应用程序中的深层链接。单击电子邮件中的链接时,会在应用程序中打开相关活动。在后按时,它要么返回电子邮件,要么返回主页(取决于我使用的意图标志)。我需要它返回到最新的运行活动(如果在单击电子邮件中的链接之前正在使用该应用程序)或(否则)转到第一个活动以重新启动应用程序。

更清楚一点:用户正在进行活动 C。电子邮件通知来了,检查它并单击里面的链接。它打开了活动 E。在这里,如果用户后按,我想结束当前任务并恢复活动 C - 如果活动 C 任务没有被系统杀死。如果被杀,请转到活动 A

在没有意图标志的情况下,它会创建一个新任务(第二个应用程序实例),并在后按时返回到电子邮件客户端。使用 NEW_TASK 标志,新任务开始。如果我对此使用 CLEAR_TASK 标志,则在后按时它会回家。

显现

<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="https"
                    android:host="www.mysite.com"
                    android:pathPattern="/mypath/*" />
</intent-filter>

第一活动

if(getIntent().getData().toString().contains("keyword")){
       //intent.setFlags(...);
       intent.putExtra("myextra", getIntent().getData().toString());
   }
    startActivity(intent);
    finish();

电子邮件结果活动

 String data = getIntent().getExtras().getString("myextra");

标签: androiddeep-linkingintentfilterdeeplink

解决方案


为此,您需要处理来自常见活动的深层链接。(例如:如果您的应用程序有一个共同的活动,比如说 XYZ。那么每个深层链接都应该来到 XYZ 活动,然后根据深层链接的参数,您应该移动到相应的屏幕)此外,您需要将 XYZ 设为 singleTask。


推荐阅读