【问题标题】:PendingIntent to finish current 3rd party activity as well as starting it's corresponding activityPendingIntent 完成当前的第 3 方活动以及开始它的相应活动
【发布时间】:2015-12-13 01:46:10
【问题描述】:

我的应用将 PendingIntent(调用我自己的 Activity)传递给第 3 方应用,并在该第 3 方应用中启动 Activity。

在某些时候,第 3 方应用程序启动了 PendingIntent(在某些按钮单击时),但它没有完成自己的 Activity。

我想知道是否有办法(可能使用 Intent 标志或 TaskStackBuilder)来构造 PendingIntent,以使第 3 方 Activity 将自动完成?

【问题讨论】:

  • 你的目标是什么?因此,从标识为“我自己的 Activity”的 Activity 中按 BACK 会返回到最初启动的所有内容,绕过第三方应用程序的干预 Activity?
  • 正确。实际上,在此示例中,我的应用程序中只有一个相关活动。该活动启动第 3 方活动,然后由第 3 方活动使用未决意图“启动”。我的目标是避免第 3 方活动的长背堆叠。实际上我现在有一个解决方案(我将在下面发布),但感觉有点像 hack。
  • 把我的活动想象成一个列表,点击每个项目都会启动第 3 方活动。并且第 3 方活动可以通过待定意图调出列表(我的活动)。

标签: android android-intent android-pendingintent android-task


【解决方案1】:

将launchMode singleTask 用于您应用中的活动。这意味着第 3 方应用活动将在触发 Pending Intent 后立即完成。

【讨论】:

  • Intent.FLAG_ACTIVITY_CLEAR_TASK,或者可能是Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED,放在Intent 中,包裹在PendingIntent 中应该具有相同的效果,并且具有更精细的粒度,以防在某些情况下您不能支持此活动的 singleTask 行为。
  • 谢谢,通常这会起作用,但在这种特殊情况下(抱歉,问题中可能缺少一些关键信息)它不起作用。我怀疑,第 3 方应用程序正在开始自己的任务(我认为它正在使用 taskAffinity;不能是 launchMode,因为如果是,活动将不会叠加)。通过在清单 (singleTask) 中指定 launchMode,我可以强制关闭第 3 方活动(或者可能转移到其他一些“隐藏”任务)。我无法找到使用Intent 标志来完成所有这些操作的方法,尽管我同意这样做会更好。
  • 是的,那么你可能会被这个解决方案所困扰。
  • 注意使用android:launchMode="singleTask"会导致android任务劫持
猜你喜欢
  • 1970-01-01
  • 2011-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-28
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多