android 历史打开,Android深层链接。 从历史记录打开应用程序时,Intent不会重置...

我有关于Android任务和意图管理的问题。

脚本用户通过深入链接进入应用程序。

我们显示将URI放入Intent Data的通知。

用户单击该通知并进入应用程序并重定向到深层链接描述的某些Feature1Activity。

用户环顾四周,退出应用程序。

之后,用户从历史记录中打开应用程序(长按主页或多任务按钮)。

现在,使用通知中使用的相同意图(使用Intent Data中的深层链接)来启动应用程序。

因此,用户再次进入Feature1Activity。

问题:

从历史记录启动应用程序(长按主页或多任务按钮)不会重置任务(从应用程序图标启动时它会执行此操作)。

我知道从历史记录中启动应用程序不应该重置任务,因为它旨在用作“向右转回你的地方”。 但是,在我的情况下,这是一个问题,因为从通知中启动应用程序是一次性的事情。

其他人遇到过这个问题? 谁知道任何解决方案?

更深入

PendingIntent内部的意图是这样构建的:

Intent intent = new Intent (Intent.ActionView); intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); intent.setData (Uri.Parse (DEEP_LINK_URL));

我刚刚发现了FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET这一天并且真的认为它可以解决我的问题,但它没有任何区别。

有三项有趣的活动:

SplashActivity (main launcher & listener of the deep-linking schema -- this activity just redirects either to login or OverviewActivity) OverviewActivity (authorized user's main activity) Feature1Activity (any feature that the deep-link is pointing to)

当用户单击通知时发生的事情是SplashActivity充当模式的侦听器,并将深层链接URL转换为两个意图,以使用Activity.startActivities(Intent [])启动OverviewActivity和Feature1Activity。

当我从SplashActivity中的通知中查看意图时,它始终包含Data中的深层链接。

一个解决方法

有一个解决方法,将一些booleanExtra字段设置为通知意图(例如“ignoreWhenLaunchedFromHistory”= true),然后在重定向之前检查SplashActivity

boolean fromHistory = (getIntent().getFlags() & FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY; if (fromHistory && getIntent().getBooleanExtra ("ignoreWhenLaunchedFromHistory", false)) // Don't follow deep-link even if it exists else // Follow deep-link

除了它是hackish和丑陋,你能看到这项工作的任何问题吗?

编辑:当我负责使用深层链接发送Intent时,解决方法才有效。 由于没有外部资源可以了解“ignoreWhenLaunchedFromHistory”的额外信息。

从我得到的,可能在您的清单上使用android:excludeFromRecents="true" (作为活动声明的属性)可能会改善这个问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值