有没有一种方法来保持活跃的通知,直到用户点击清楚了吗?(Is there a way to keep

2019-10-19 00:15发布

我有一个在后台运行,并通知用户,如果他们有一个新的PDF查看服务。 当他们点击该通知的窗户打开了让他们下载PDF(一个或多个)的选项。 问题是,一旦用户关闭这个窗口,他们没有办法回到那个屏幕,因为当他们点击它通知被清除。 我想这个通知仍然有效,直到用户点击“清除通知”的情况下,他们不小心关闭了通知打开的窗口。*

*我不创建应用程序永久访问的窗口/视图的原因是因为通知是时间敏感的。 20分钟后的PDF文件可供他们随时查看。 创建另一个永久的看法是多余的。 此通知是只存在于允许用户早一点查看PDF文件。

编辑:由@Rahul古普塔提供的答案之后,我想通了,我的应用程序是使用“FLAG_AUTO_CANCEL”如果我没有指定一个标志。 因此,对于我的解决方案,我只是把另一个标志。 由于我使用的Appcelerator的钛,我没有setAutoCancel()函数,所以这不是我的选择。

Answer 1:

对于低于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将被广播。



文章来源: Is there a way to keep notification active until user clicks clear?