Android - 从通知中删除操作按钮

Bam*_*amx 14 notifications android

我想在点击这些操作按钮时关闭通知操作按钮(而不是整个通知).(可以说:带有停止操作按钮的下载通知.单击停止时,关闭停止按钮并将contentText更改为"下载已取消")

我唯一想到的是取消通知并通知另一个具有相同ID的通知,但这似乎是一个丑陋的解决方法......

那么,有没有办法从通知中删除动作按钮?

(我认为没有必要提供任何代码,但如果必要,我会...)

小智 22

如果您正在使用v4支持库中的NotificationCompat.Builder,则可以直接访问构建器的操作集(不幸的是,不提供公共更改器).

以下是诀窍(当然你必须更新重新通知):

NotificationCompat.Builder notifBuilder = NotificationCompat.Builder(context);
...
notifBuilder.mActions.clear();
Run Code Online (Sandbox Code Playgroud)

  • @coxc当您更新到gradle插件版本3.3.0时,它将抱怨上面的声明:错误:只能从同一库组(groupId = androidx.core)中访问Builder.mActions [RestrictedApi] (6认同)
  • `Builder.mActions只能从同一库组(groupId = com.android.support)中访问。 (4认同)
  • 尽管它以红色显示(`RestrictedApi`),就好像它是一个错误一样,它仍然有效。我不知道这样做的缺点。有没有人?从头开始创建“NotificationBuilder 对象”可能不是一个好的解决方案,因为它“可能”导致更新时弹出/闪烁“通知”。所以,我仍然使用这个,我盲目地忽略 `RestrictedApi` ... (3认同)
  • 我知道这篇文章很旧,但我只是第一次遇到这个问题,老实说,这显然是通知 API 的一个非常糟糕的缺点。您要么必须创建构建器的新实例,然后重新设置降低代码可读性的所有字段,要么使用您的解决方案 - 有效 - 但非常难看,因为 `mActions` 应该是私有成员,而 Google 没有提供一种清除动作的方法。真可惜... (2认同)