代码之家  ›  专栏  ›  技术社区  ›  Itay Feldman

显示当前运行活动的对话框

  •  -2
  • Itay Feldman  · 技术社区  · 6 年前

    所以在人们跑过去说这是复制品之前,让我解释一下。

    我有一个应用程序,基本上是一个平板电脑中的汽车发射器。 当我从服务器收到消息时,我会将其显示为一个弹出对话框,其中包含以下代码-

    public void openMessage(MsgItem msg)
    {
        Intent intent = new Intent(_context, MainActivity.class);
        intent.putExtra(MainActivity.OP_EXTRA_MESSAGE, msg);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        _context.startActivity(intent);
    }
    

    现在您可以看到它返回到mainactivity,然后在那里显示弹出窗口。

    我希望这个应用程序能够显示它里面运行的任何应用程序的弹出窗口。 这意味着,如果用户从启动程序打开了waze应用程序,并弹出一个窗口,它将显示在waze活动上,并且不会首先带我到mainactivity。

    如何获取为此目的打开的应用程序/活动? 有几个应用程序可以从waze旁边的启动程序打开。

    我看到了关于活动实例等的其他答案,但我没有在代码中实现任何东西。

    2 回复  |  直到 5 年前
        1
  •  1
  •   CommonsWare    6 年前

    如何获取为此目的打开的应用程序/活动?

    你没有办法得到 Activity 其他应用程序的对象。

    我希望这个应用程序能够显示它里面运行的任何应用程序的弹出窗口。

    使用对话框样式的主题(例如, Theme.AppCompat.Dialog )然后,开始那个活动。

    请注意,在屏幕上弹出一些从后台接管大部分前景的用户界面是相当用户敌意的。用户可能正在做一些你会打断的事情。

        2
  •  0
  •   Stephen M -on strike-    6 年前

    因此,在多次尝试和失败之后,解决方案是使用带有UI的自定义服务。我在它上面添加了一个视图并在必要时调用它的服务。

    @我第一次选择正确的Commonware的答案并不是我需要的,因为我想让弹出窗口显示,即使我在waze应用程序中,例如,使用带有对话主题的活动的解决方案也不能做到这一点,因为它有应用程序的上下文,所以总是返回到应用程序b。在展示之前。

    获得此解决方案的唯一方法是使用带有对话框视图的服务。