我有一个在后台运行的服务,如果有新的PDF要查看,则会通知用户。当他们点击通知时,会打开一个窗口,为他们提供下载PDF的选项。问题是,一旦用户关闭此窗口,他们无法返回到该屏幕,因为通知在他们点击时被清除。我希望此通知保持有效,直到用户在他们意外关闭通知打开的窗口时单击“清除通知”。*
*我没有在应用程序中创建永久可访问的窗口/视图的原因是因为通知是时间敏感的。 20分钟后,PDF可供他们随时查看。创建另一个永久视图将是多余的。此通知仅允许用户稍早查看PDF。
编辑:按照@Rahul Gupta提供的答案,我发现如果我没有指定标志,我的应用程序正在使用'FLAG_AUTO_CANCEL'。所以对于我的解决方案,我只是放入另一面旗帜。由于我使用的是Titanium Appcelerator,因此我没有setAutoCancel()函数,所以这对我来说不是一个选项。
答案 0 :(得分:3)
对于11以下的API,您可以设置Notification.FLAG_NO_CLEAR。这可以这样实现:
// Create notification
Notification note = new Notification(R.drawable.your_icon, "Example ", System.currentTimeMillis());
// Set notification message
note.setLatestEventInfo(context, "Some text", "Some more text", clickIntent);
// THIS LINE IS THE IMPORTANT ONE
// This notification will not be cleared by swiping or by pressing "Clear all"
note.flags |= Notification.FLAG_NO_CLEAR;
对于高于11的API级别,或使用Android支持库时,可以像下面这样实现:
Notification noti = new Notification.Builder(mContext)
.setContentTitle("title")
.setContentText("content")
.setSmallIcon(R.drawable.yourIcon)
.setLargeIcon(R.drawable.yourBigIcon)
.setOngoing(true) // Again, THIS is the important line. This method lets the notification to stay.
.build();
或者您可以使用NotificationCompat类。
public NotificationCompat.Builder setAutoCancel (boolean autoCancel)
设置此标志将使用户在用户单击面板时自动取消通知。取消通知时,将广播使用setDeleteIntent(PendingIntent)设置的PendingIntent。