如何显示来自服务的对话框

我已经阅读了很多关于这个话题的post,但是没有任何作品适合我(或者没有我想要的效果)。

我有一个应用程序,login后启动一个后台服务(Service类的实现)。 该服务与服务器同步,如果有新的订单,它会创build一个通知。

到目前为止,一切都很好,我有通知和Toast消息。 但是,我想要一个对话框,通知用户有关新订单。

据我所知,你可以从服务内部开始一个活动,显示对话框。 这可以工作,但活动从当前活动堆栈的顶部开始并显示对话框。 我有一个没有附加视图的活动,但它正确地显示在黑色背景上的对话框。

我想要的是显示当前活动的对话框,导致实际的背景(运行活动)淡入淡出并显示对话框。

这有可能吗?

谢谢你,菲利普

我高度重视,强烈build议您不要这样做(这违背了Androiddevise和UI准则)。 通知是完成你正在做的事情的首选方式(听起来好像你已经完成了)。

这就是说,如果你必须这样做,我会build议只使用对话框主题活动。 这样你就不必启动一个单独的对话框。 请参阅http://developer.android.com/guide/topics/ui/themes.html#ApplyATheme了解如何做到这一点。;

只有在系统警报对话框中,我们才能显示来自服务的对话框。 因此,将TYPE_SYSTEM_ALERT窗口布局参数设置为Dialog,如下所示:

 dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 

但是,它需要SYSTEM_ALERT_WINDOW权限。 所以,不要忘记在Manifest文件中添加这个许可证。

 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> 

您可以从学习如何创build看起来像对话框的活动(无标题栏,透明背景,“浮动”效果等)开始,并且不能,只有在没有活动的情况下才能启动对话框

不,你不能劫持不属于你的活动,并命令它显示对话框。 你开始自己的活动的方法是经典之作。

你不能显示对话框。 但是,您可以通过夸大自定义视图的方式,以便在满足特定条件时在屏幕上显示对话框。