如何设置常驻通知的同时通知栏不显示小图标&如何在兼容低版本的前提下调用高版本的api

本文介绍了如何在Android应用中设置常驻通知而不显示通知栏小图标,以及如何在兼容低版本系统的同时调用高版本API。通过分析Stack Overflow上的解决方案,尝试了设置透明图标和利用`Notification.PRIORITY_MIN`属性,最终通过判断系统版本并适配的方式实现了目标效果。在API 16及以上版本,通过设置通知优先级为`PRIORITY_MIN`成功隐藏图标,但在Android 4.0及以下版本仍无法避免小图标显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相关app :Worktile

遇到这两个问题的起因:应用需要展示常驻通知栏的通知来让用户快速新建任务,同时不希望在通知栏展示出小图标,只用下拉通知栏时才显示这条常驻通知。因为小图标的显示会让用户误以为有新消息。。而且有app实现了这种(any.do)

问题解决的路径:Google 查找相关解决办法。

1.http://stackoverflow.com/questions/2855110/android-no-icon-for-notification

   其中某位answerer关键代码是:设置 notification.when = -Long.MAXVALUE; notification.icon = 透明图标;

使用这种方法来实现思路:通知的小图标总在最右,且为透明,是一种假象。

存在的问题:某些情况下,会是这样的显示:

两个图标的中间部分就是设置的透明的图标。

该方法,放弃。

2.http://stackoverflow.com/questions/2855110/android-no-icon-for-notification

   某位answerer的回答:

This is now possible in Android 4.1; the reference implementation of the Jelly Bean status bar will suppress icons for PRIORITY_MIN notifications, although their content will still show in the notification panel.

查看官方文档发现,在api 16 增加了priority变量。然而,我的项目支持的最低版本是4.0。

该方法,暂时放弃。

3.Google any.do是如何实现的,发现以下信息 

这表明,这Android 4.0及以下 是没有办法实现的,而方法2是估计是靠谱的方法。

那么,问题来了,如何在兼容低版本的前提下调用高版本的api ?

1.修改Project Build Target 为4.1.0(16)

2.在方法上增加注释@TargetApi(16)

3.实现代码

if (Build.VERSION.SDK_INT >= 16) {

notification.priority = Notification.PRIORITY_MIN;

}

完美解决。当然 4.0 还是会显示小图片,whatever。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值