android - 从深层链接开始活动,并从最新运行的活动中恢复
问题描述
我正在处理我的应用程序中的深层链接。单击电子邮件中的链接时,会在应用程序中打开相关活动。在后按时,它要么返回电子邮件,要么返回主页(取决于我使用的意图标志)。我需要它返回到最新的运行活动(如果在单击电子邮件中的链接之前正在使用该应用程序)或(否则)转到第一个活动以重新启动应用程序。
更清楚一点:用户正在进行活动 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");
解决方案
为此,您需要处理来自常见活动的深层链接。(例如:如果您的应用程序有一个共同的活动,比如说 XYZ。那么每个深层链接都应该来到 XYZ 活动,然后根据深层链接的参数,您应该移动到相应的屏幕)此外,您需要将 XYZ 设为 singleTask。
推荐阅读
- vxworks - VxWorks 有 strptime()
- spring-integration - 是否可以为数据源中的每个实体配置轮询器?
- javascript - HTML:当我尝试在文本框中显示 javascript ECDSA 签名的十六进制值时出现“未定义”结果
- javascript - 如果Window.print,Vuejs显示元素?
- python - 使用 MSE 将二次函数拟合到数据
- angular - Angular 2:粘性滚动条和 ViewportScroller,滚动到带有粘性导航栏的锚元素
- symfony - 我在api平台中找不到任何swagger配置文件
- c# - 如何从 XML 持久性格式文件导入/导出?
- csv - 添加新行时,如何将 csv 文件写入控制台作为接收器?
- python - 当我调用内部/装饰函数时,我可以将参数传递给我的装饰器函数吗?