单击推送通知后,当应用程序进入前台时如何显示自定义对话框

Posted

技术标签:

【中文标题】单击推送通知后,当应用程序进入前台时如何显示自定义对话框【英文标题】:How to display custom dialog box when application comes to foreground after clicking on Push notification 【发布时间】:2017-09-11 17:44:16 【问题描述】:

我有一个自定义对话框,希望在用户单击推送通知后显示。我在这里使用FirebaseMessagingService

以下是我接收推送通知的代码。我正在创建一个意图并广播它。

@Override
public void onMessageReceived(RemoteMessage remoteMessage) 
    super.onMessageReceived(remoteMessage);

   if (remoteMessage.getData().size() > 0) 
        Intent intent = new Intent(Cons.INTENT_FILTER);

        try 
            // getting my data here
            Bundle bundle = new Bundle();
            bundle.putSerializable(key, data);
            intent.putExtras(bundle);
        
        catch (Exception e)

        
        sendBroadcast(intent);
    


在我的基本活动中,我使用BroadcastReceiver 接收意图并显示对话框。

private BroadcastReceiver myReceiver = new BroadcastReceiver() 
    @Override
    public void onReceive(Context context, Intent intent) 

        FragmentTransaction transaction = getFragmentManager().beginTransaction();
        DialogFragment dialogFragment = new CustomDialog();
        Bundle bundle = new Bundle();
       // I am getting data from intent.
        bundle.putSerializable(key, data);
        dialogFragment.setArguments(bundle);
        dialogFragment.show(transaction, "dialog");
    
;

如果应用程序在前台,我可以看到包含所有数据的对话框。如果应用处于后台或应用未运行,则此代码不起作用。

我试图寻找解决方案,说明获取应用程序的运行状态并相应地设置一些 if 条件。我想知道是否有其他解决方案。 谢谢。

【问题讨论】:

【参考方案1】:

简单地将活动制作为对话框并使用它。

为您的活动设置对话框主题:

<activity name=".MyDialogActivity" android:theme="Theme.AppCompat.Dialog"/>

【讨论】:

我不想将我的活动显示为对话框。请仔细阅读我的问题。谢谢。 我知道你的要求。你不能在没有活动的情况下显示对话框。创建 Activity 而不是 DialogFragment。 我已经有活动了。我的第二段代码在 Activity 中。 我想在当前活动的顶部显示对话框。 我完全了解您的实施。您已经在活动中实现了广播接收器以显示对话框片段。但我要说的是创建一个活动并将其显示为对话框。直接从 Firebase 消息服务启动对话活动

以上是关于单击推送通知后,当应用程序进入前台时如何显示自定义对话框的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 10 下使用 FCM 在前台单击推送通知后无法导航到特定的 viewController

当用户在 swift 中单击推送通知时打开自定义 url

当应用程序通过使用 firebase_messaging 的推送通知终止时如何接收自定义数据?

手机操作系统中显示的 Bluemix 推送通知在单击时不会启动应用程序

当应用程序处于前台时收到推送通知时,是不是可以为 ios 显示横幅?

如何处理收到推送通知后恢复应用程序的情况