Android 在接收推送通知时无法创建对话框

Android 在接收推送通知时无法创建对话框,android,android-notifications,android-dialog,Android,Android Notifications,Android Dialog,每当我收到推送通知,并且我的应用程序可见(onStart()/onStop()对),我都会尝试从gcminentservice类向用户显示一个对话框。 (我还没有切换到下一个GCM,实际上我切换到了,但我遇到了问题,所以我切换回了旧的GCM) 我得到的错误是 android.view.WindowManager$BadTokenException:无法添加窗口--标记null不适用于应用程序 我知道这是一个上下文错误,在谷歌的文档中写错了。。。 但是,当我收到通知时,如何显示对话框?不要使用对话

每当我收到推送通知,并且我的应用程序可见(onStart()/onStop()对),我都会尝试从gcminentservice类向用户显示一个对话框。 (我还没有切换到下一个GCM,实际上我切换到了,但我遇到了问题,所以我切换回了旧的GCM)

我得到的错误是

android.view.WindowManager$BadTokenException:无法添加窗口--标记null不适用于应用程序

我知道这是一个上下文错误,在谷歌的文档中写错了。。。
但是,当我收到通知时,如何显示对话框?

不要使用对话框,而是创建一个活动,并将其主题设置为
主题。dialog
或其任何子项,然后从
onMessage
方法启动活动


这样,您的活动将达到对话的目的,问题将消失

您需要先开始活动。(但你的活动可以是一个对话)@njzk2如果是这样的话,我需要知道现在哪个活动是开放的,对吗?实际上,当通知到来时,一个随机活动将被打开,我希望对话框出现在那里。好主意。让我试试。我试过这种方法,效果很好,(你需要在活动中加入新任务的标志,尽管……我是通过艰苦的方式学会的)。。。然而,我的对话主题活动占用了全部空间,,,,尽管我只有一个小按钮…(父布局的高度设置为包装内容)是的。。它确实占用了很多空间。不久前,我还在开发一个类似的应用程序。。这是我发现的唯一解决方案问题已经解决了。通过将父级的高度设置为包装内容,并将主题硬编码的名称添加到清单内的活动中。
protected void onMessage(Context context, Intent intent)
{
    AlertDialog.Builder builder = new AlertDialog.Builder(context); //issue here

builder.setMessage("You have a notification").setTitle("Notification");
builder.setPositiveButton("dismiss",
new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int id)
{
Intent intent = new Intent(Intent.ACTION_MAIN);
                        intent.addCategory(Intent.CATEGORY_HOME);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
});

AlertDialog dialog = builder.create();
dialog.show();
 }