有没有办法在用户点击清除之前保持通知有效?

时间:2013-11-18 18:04:07

标签: android notifications window

我有一个在后台运行的服务,如果有新的PDF要查看,则会通知用户。当他们点击通知时,会打开一个窗口,为他们提供下载PDF的选项。问题是,一旦用户关闭此窗口,他们无法返回到该屏幕,因为通知在他们点击时被清除。我希望此通知保持有效,直到用户在他们意外关闭通知打开的窗口时单击“清除通知”。*

*我没有在应用程序中创建永久可访问的窗口/视图的原因是因为通知是时间敏感的。 20分钟后,PDF可供他们随时查看。创建另一个永久视图将是多余的。此通知仅允许用户稍早查看PDF。

编辑:按照@Rahul Gupta提供的答案,我发现如果我没有指定标志,我的应用程序正在使用'FLAG_AUTO_CANCEL'。所以对于我的解决方案,我只是放入另一面旗帜。由于我使用的是Titanium Appcelerator,因此我没有setAutoCancel()函数,所以这对我来说不是一个选项。

1 个答案:

答案 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。