大多数熟悉 Notification 和 PendingIntent API 的人都知道 setLatestEventInfo 现在已被弃用。
因此,我试图替换我现有的代码(取决于不推荐使用的方法):
Context context = getApplicationContext();
Intent activityIntent = new Intent(context, Activity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
Notification notification = new Notification(R.drawable.icon, getString(R.string.notify),System.currentTimeMillis());
PendingIntent startIntent = PendingIntent.getActivity(context, 0, activityIntent, 0);
notification.setLatestEventInfo(context, getString(R.string.notify), getString(R.string.notifysummary), startIntent);
this.startForeground(1234,notification);
正如您可能猜到的,我是从后台运行的服务内部调用它的。当服务启动时,它会弹出通知。这是一个持续的、持续的通知,它会将活动“Activity.class”放在前面以防它存在,并创建一个新的活动实例以防它同时被杀死。工作正常,没有任何问题。
现在,想要迁移到更新的 API 级别,我试图用以下NotificationBuilder示例替换上面的代码:
Context context = getApplicationContext();
Intent activityIntent = new Intent(context, Activity.class);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent startIntent = PendingIntent.getActivity(context, 0, activityIntent, Intent.FLAG_ACTIVITY_SINGLE_TOP);
Notification notification = new Notification.Builder(context).setSmallIcon(R.drawable.ic_launcher).setContentText("App running").setContentTitle("My app").setOngoing(true).setAutoCancel(false).setContentIntent(startIntent).build();
this.startForeground(1234,notification);
但是点击通知没有任何效果。但是,我已经尝试过“Intent.FLAG_ACTIVITY_NEW_TASK”,因为文档说我应该这样做。即使活动已经在顶部,这也会创建一个新任务,这与文档所说的相反:PendingIntent,FLAG_ACTIVITY_NEW_TASK。
有没有人遇到同样的问题?如何构造一个在单击时不会关闭的持久通知,并将活动置于堆栈上的某个位置,否则会创建它的新实例?
谢谢你的帮助。