创建弹出窗口而不是来自 BroadcastReceiver 的通知

create pop up instead of notification from BroadcastReceiver

我需要在屏幕中央显示弹出消息,在阅读了几个论坛后我发现可以通过启动一个新的透明 activity 来实现。

这是我的代码:

@Override
public void onReceive(Context context, Intent intent) {

    Intent i = new Intent();
    i.setClassName(context,
            "com.ui.activity.NotificationActivity");
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);

}

这项工作但是 :

如果应用程序在后台运行,则应用程序将进入前台并显示弹出窗口(如果应用程序不在后台运行,这项工作很棒)。

如果您不希望在显示此弹出窗口时将您的应用程序带到前台,您需要确保 NotificationActivity 与应用程序的其余部分具有不同的任务关联。

在清单中,将此添加到 NotificationActivity<activity> 定义中:

android:taskAffinity=""

如果没有这个,所有 Activity 的默认任务亲和力都是相同的,因此当 Android 寻找要启动的任务 NotificationActivity 时,您的应用已经 运行 , Android 将 NotificationActivity 启动到该任务并将其置于前台。

如果您更改任务关联,Android 将不会寻找现有任务来启动 NotificationActivity,而只会创建一个新任务。