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

时间:2018-05-29 13:04:26

标签: android dialog android-launcher

所以在人们跑步之前说这是重复的,让我解释一下。

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

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 个答案:

答案 0 :(得分:1)

  

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

您无法为其他应用获取Activity个对象。

  

我希望该应用能够显示弹出应用程序在其中运行的内容。

使用对话框样式主题(例如Theme.AppCompat.Dialog)将您的“弹出窗口”实现为活动本身。然后,开始那项活动。

请注意,在屏幕上弹出一些从后台占据大部分前景的用户界面非常恶劣。用户可能正在做一些你会打断的事情。

答案 1 :(得分:0)

因此经过大量尝试和失败后,解决方案是使用带有UI的自定义服务。我在其上添加视图并在必要时调用它的服务。

@ CommonsWare的答案,我首先选择的是正确的答案,这不是我需要的,因为我想要弹出显示即使我在Waze应用程序中,例如使用活动的解决方案对话框主题无法执行此操作,因为它具有应用程序的上下文,因此在显示之前将始终返回应用程序。

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