通知生成器和FLAG_INSISTENT

3
我喜欢使用Notification.Builder的易用性,但似乎不支持通知的持续模式。
是否有一种方法可以从Notification.Builder设置标志FLAG_INSISTENT
2个回答

14

不能直接设置。在Notification.Builder上有一个私有的setFlag()方法 - 我不知道他们为什么没有公开它。

但是,您可以通过使用Builder配置其余的Notification,然后调整完成的Notification对象的标志。

或者,获取Notification.Builder的代码并修改它以创建自己的构建器,该构建器公开setFlag()或添加setInsistent()等方法。


1
谢谢,调整已完成的通知对象上的标志是我正在使用的解决方法。我想知道是否有一种方法可以从Notification.Builder中设置标志,但显然似乎不行。 - Roberto Leinardi
FLAG_INSISTENT 在 Oreo 以上无法工作,请问您有什么建议吗? - Pooja Shukla
@PoojaShukla:如果有类似于FLAG_INSISTENT的东西,它很可能是通知渠道的一部分,因为那里配置了声音。然而,我不知道是否有像以前使用FLAG_INSISTENT一样的选项。但是,我还没有深入研究这个问题。 - CommonsWare

4
也许我的回答能对其他人有所帮助。
您可以使用以下方法:
NotificationCompat.Builder builder = new NotificationCompat.Builder(getContext());

builder.setContentTitle("Title")
       .setContentText("Hello world")
       .setSmallIcon(R.mipmap.ic_launcher);

Notification notification = builder.build();
notification.flags = Notification.FLAG_INSISTENT;
final NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(ID, notification)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接