上下文/我的应用
我正在处理一个代表另一个应用程序显示图片预览的应用程序(任何应用程序,但让我们使用购物应用程序作为示例)。典型的用户会话看起来像(就彼此堆叠的活动而言):
...然后事情变得有点棘手,在预览中:用户激活菜单"分享为"
步骤(4)需要由购物处理,因为那里有一些特定于购物的逻辑,关于如何处理这个,但它是同一任务的一部分(实际上,作为对话框的一部分)顶部)。
这样做的一种方法是Previews将从Shopping an Intent处理"分享为"对给定项目的操作,因此在预览中:
onOptionsItemSelected(MenuItem) {
if (action == shareAs) {
startActivity(shareAsIntent);
}
...
}
并且shareAsIntent指向购物中显示为对话框的公开活动,一切都很好。
但是
...出于安全原因,我们希望该活动是私有的,并且意图是明确的(购物很高兴Previews可以调用该方法,但手机上没有任何其他应用程序。)
等待拯救?
解决此问题的一个有用的候选人可能是使用PendingIntent。它们通常用于授予另一个应用程序执行私有活动的权限,太棒了!问题是,执行挂起的意图(.send())将启动一个新任务,并且(步骤4:对话框)不会出现在(步骤3:显示图像)之上,就像我在使用时一样一个简单的意图。
我已经阅读了关于preserving navigation和其他threads有关待处理意图的文章,但他们主要指的是似乎要做的待处理意图:从其他应用重启活动&#39 ; s服务,因此整个任务堆栈属于创建待定意图的应用程序,而不是使用它的应用程序。
摘要
准确地说,我的问题是:如何将待处理意图启动的活动置于执行它的活动(应用程序B - 预览)的任务之上,而不是创建它的活动(应用程序A) - 购物),就像我调用(来自应用B)一样:startActivity(intent)?