待定意图在另一个活动之上启动活动

时间:2015-07-14 04:43:40

标签: android android-intent

上下文/我的应用

我正在处理一个代表另一个应用程序显示图片预览的应用程序(任何应用程序,但让我们使用购物应用程序作为示例)。典型的用户会话看起来像(就彼此堆叠的活动而言):

  1. 购物:主屏幕
  2. 购物:商品详情屏幕
  3. 预览:全屏显示一个图像,允许导航到其他图像
  4. ...然后事情变得有点棘手,在预览中:用户激活菜单"分享为"

    1. 购物:处理行动"分享为"使用浮动对话框
    2. 步骤(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)?

0 个答案:

没有答案