创建弹出窗口而不是来自 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
,而只会创建一个新任务。
我需要在屏幕中央显示弹出消息,在阅读了几个论坛后我发现可以通过启动一个新的透明 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
,而只会创建一个新任务。