【问题标题】:How to handle Android notification badges with multiple launchers?如何使用多个启动器处理 Android 通知徽章?
【发布时间】:2018-08-21 11:27:29
【问题描述】:

从 Android 8 开始,所有通知都应该分配给一些 NotificationChannel。就我而言,问题是该应用程序有多个启动器,并且徽章显示在每个启动器上。

所以我可以为每个 NotificationChannel 禁用徽章,但无论如何它们都可以由用户打开。

是否可以将“NotificationChannel”连接到特定的启动器活动?我没有找到任何现有的 API,也没有提到它是目前的限制。

【问题讨论】:

    标签: android android-activity notifications android-8.0-oreo notification-channel


    【解决方案1】:

    您可以禁用徽章每个频道,例如。与mChannel.setShowBadge(false)

    设置发布到此频道的通知是否可以在启动器中显示为应用程序图标徽章。 只能在频道提交到 NotificationManager.createNotificationChannel(NotificationChannel) 之前修改

    ...当已将一些channelId 分配给NotificationChannel 时。

    setGroup()  / getGroup() canShowBadge()  方法似乎也相关。

    因此,您必须为每个启动器定义频道(或至少两个,以便至少有一个不显示徽章的频道) - 然后您可以禁用其中一些频道的徽章,具体取决于通知的频道正在发送。

    还有NotificationCompat.Builder(Context context, String channelId)

    方法.setShortcutId (String shortcutId):

    如果此通知与 Launcher 快捷方式重复,则设置快捷方式的 id,以防 Launcher 想要隐藏快捷方式。

    LauncherApps 可以提供对这些快捷方式的访问;

    至少可以获得来自ShortcutInfo的徽章图标。

    android.intent.action.BADGE_COUNT_UPDATE 用于库存 Android Oreo。

    目前,只有 Sony 启动器允许使用 com.sonyericsson.home.intent.extra.badge.ACTIVITY_NAME 定义 Activity。

    【讨论】:

    • 谢谢,我知道了。但用户可以将其重新打开。
    • 正确,关于如何“定义每个启动器的频道”的原始问题是正确的
    • @birdy 我有时在写的时候点击了保存。;并添加了android-oreo 标签。并且不能直接定义每个启动器的通道,而只能定义每个通知 - 但是,每个单个启动器活动都可以有自己的通道(这可能是无用的复杂性),这取决于一个使用哪个通知(带有相关的通知 channelId),一个可以将每个活动的这些通知...路由到至少两个渠道,例如。一个有徽章,一个没有。
    • 就我而言,有 3 个 NotificationChannels 和 2 个活动。 Channel1 用于 Activity1,Channel2 用于 Activity2,Channel3 用于不带徽章的通知。问题是当 Channel1 收到通知时 - 徽章会在 Activity1 和 Activity2 上更新
    • @birdy 这些快捷方式仍然非常接近......但不知何故,无法控制哪个启动器图标将显示这些徽章(因为甚至无法访问这些按钮);您只能对androidxissuetracker.google.com/issues?q=componentid:192731 提出功能请求(可能这是按设计,但可能只是没有考虑过)。似乎这些通知是按包名称而不是按启动器活动在内部发送的;所以没有办法区分。
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-12-14
    • 1970-01-01
    相关资源
    最近更新 更多