我想创建一个不带图标的通知,出现在状态栏中(展开后的状态)。我尝试使用自定义扩展视图,并仅为此视图设置图标。但是它没有成功。当我将构造函数的图标参数设置为0时,图标消失了,但通知也没有出现在扩展视图中。
Notification notification = new Notification(0, "", 0);
我尝试了很多组合,但没有找到解决方案。顺便说一下,我知道这个功能在一些应用程序中可以使用。谢谢。
我想创建一个不带图标的通知,出现在状态栏中(展开后的状态)。我尝试使用自定义扩展视图,并仅为此视图设置图标。但是它没有成功。当我将构造函数的图标参数设置为0时,图标消失了,但通知也没有出现在扩展视图中。
Notification notification = new Notification(0, "", 0);
我尝试了很多组合,但没有找到解决方案。顺便说一下,我知道这个功能在一些应用程序中可以使用。谢谢。
QuickSettings就是这样做的,当我看到那段代码时,我发现它使用了Notification的默认构造函数,并将其图标推到通知栏的右侧。我认为它仍然使用空间但没有图标。
一些代码:
notification = new Notification();
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.flags |= Notification.FLAG_NO_CLEAR;
long hiddenTime = Constants.SDK_VERSION >= 9 ? -Long.MAX_VALUE : Long.MAX_VALUE;
notification.when = visible ? System.currentTimeMillis() : hiddenTime; // align
// left (0) / right (max) in status bar
编辑:抱歉,我错过了一行重要的代码,实际上他使用了一个占位符。但现在你有一些代码了 ;-)
notification.icon = visible ? (status == Constants.STATUS_BLACK_ICON ?
R.drawable.ic_logo_black : R.drawable.ic_logo_white)
: R.drawable.ic_placeholder;
这里有一个可以尝试的东西。两次发出通知,一次使用icon=0,另一次使用真正的图标。先尝试一种顺序,然后再尝试相反的顺序。
我做了类似于这样的事情,得到了在状态栏中没有通知,在扩展列表中有通知的效果,除了其中之一(使用icon=0的那个)是由Service.startForeground()发出的。我现在没有时间进行更多的实验。