我有一个通知服务正在运行,它将为用户创建一个通知,如果用户单击该通知,它将打开一个活动以显示消息,我用于创建通知的方法是:
public void createNotificationMsg(String name,String doing, boolean persistent){
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(),
0, new Intent(getApplicationContext(), MessageNotificationActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
| Intent.FLAG_ACTIVITY_SINGLE_TOP).putExtra("message", doing),
PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder notificationBuilder =
(NotificationCompat.Builder) new NotificationCompat.Builder(getApplicationContext())
.setSmallIcon(R.drawable.my_logo_96)
.setContentTitle(name)
.setContentText(doing)
.setPriority(Notification.PRIORITY_HIGH)
.setDefaults(Notification.DEFAULT_ALL)
.setContentIntent(pendingIntent)
.setPriority(Notification.PRIORITY_HIGH)
.setColor(Color.parseColor("#1aadce"));
if (persistent){
notificationBuilder.setOngoing(true);
}
else {
notificationBuilder.setOngoing(false);
}
NotificationManagerCompat notificationManager =
NotificationManagerCompat.from(getApplicationContext());
Notification notification = notificationBuilder.build();
notificationManager.notify(0, notification);
}
MessageNotificationActivity正在使用“android:style/theme.dialog”使其看起来像一个对话框。现在的情况是,当我单击通知时,一切都很顺利,活动就像一个后台没有任何内容的对话框一样打开,但如果应用程序暂停并处于后台,当我单击通知时,它会将应用程序的主要活动放在前面,然后在上面打开MessageNotificationActivity。我怎样才能使通知不把主要活动放在前面,而只对特定的活动有意图呢?
发生这种情况的原因是,你的对话主题活动与应用程序中的其他活动具有相同的“任务亲和力”,所以当你点击通知时,Android会寻找合适的任务来启动对话主题活动。如果你的应用程序在后台,Android会将其视为与对话主题活动具有相同“任务亲和力”的任务,并将该任务带到前台,并将对话主题活动启动到该任务中。
为了防止这种情况发生,您需要将android:taskaffinity=“”
添加到对话框主题活动的清单中的
声明中。这告诉Android将对话主题的活动启动到一个新的任务中,而不是启动到应用程序的任务中。
我正在从google firebase为我的android应用程序发送推送通知,目标是Android5.0: 我的推送通知代码是: 但为什么?这就像当应用程序在后台时,通知不使用活动代码中的设置,而只使用AndroidManifest中的某种“默认”设置。
我还发现:
上面的代码行是在我的Android库项目中,因为我不知道在这个地方我的主要活动的类。 当在测试设备上通过USB接口部署应用程序时,这就像是一种魅力,但当在4.3设备上安装谷歌Play的应用程序时,就会出现这种错误。 <罢工> 07-03 13:54:19.843:E/DatabaseUtils(2344):向包写入异常07-03 13:54:19.843:E/DatabaseUtils(2344)
当用户在我的通知中单击一个按钮时,我正试图打开,而该应用程序仅在后台运行并提供服务。单击按钮时,这些行在类中被触发: 我已经检查过了,这些行被触发了,所以对按钮的点击做出反应没有问题,但是不会打开。 有什么建议吗?为什么这对我不起作用,我怎么能让它起作用? 我被要求提供更多的代码,因此在我的
杀死应用程序并发送推送,它正在重定向到所需的活动后,处理这个推送,把应用程序放在后台并发送推送。它将恢复最后一个活动,但意向性附加为NULL。
有时当应用程序收到通知时,它不会发出声音。下面是代码段。