从深层链接开始 activity,然后按从最新 运行 activity 恢复
Start activity from deeplink and on back press resume from latest running activity
我在我的应用程序中处理深度 links。单击电子邮件中的 link 时,它会在应用程序中打开相关的 activity。在后退时,它会返回电子邮件或主页(取决于我使用的意图标志)。
我需要它返回到 最新的 运行 activity(如果在单击电子邮件中的 link 之前正在使用该应用程序)或(其他)转到第一个 activity 以重新启动应用程序。
更清楚:用户在 activity C。电子邮件通知来了,检查它并单击里面的 link。它打开 activity E。在这里,如果用户后退,我想结束当前任务并恢复 activity C - 如果 activity C 任务没有被系统杀死。如果被杀,去activity 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();
EmailResultActivity
String data = getIntent().getExtras().getString("myextra");
要实现这一点,您需要处理来自普通 activity 的深度 link。 (例如:如果你的应用程序有一个共同的 activity 说 XYZ。那么每个 deep-link 应该来 XYZ activity 然后根据 deep-link 的参数,你应该移动到相应的屏幕)你还需要将 XYZ 设为 singleTask。
我在我的应用程序中处理深度 links。单击电子邮件中的 link 时,它会在应用程序中打开相关的 activity。在后退时,它会返回电子邮件或主页(取决于我使用的意图标志)。 我需要它返回到 最新的 运行 activity(如果在单击电子邮件中的 link 之前正在使用该应用程序)或(其他)转到第一个 activity 以重新启动应用程序。
更清楚:用户在 activity C。电子邮件通知来了,检查它并单击里面的 link。它打开 activity E。在这里,如果用户后退,我想结束当前任务并恢复 activity C - 如果 activity C 任务没有被系统杀死。如果被杀,去activity 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();
EmailResultActivity
String data = getIntent().getExtras().getString("myextra");
要实现这一点,您需要处理来自普通 activity 的深度 link。 (例如:如果你的应用程序有一个共同的 activity 说 XYZ。那么每个 deep-link 应该来 XYZ activity 然后根据 deep-link 的参数,你应该移动到相应的屏幕)你还需要将 XYZ 设为 singleTask。