【问题标题】:PendingIntent.getBroadcast lint warningPendingIntent.getBroadcast lint 警告
【发布时间】:2021-05-10 08:04:52
【问题描述】:

关于使用PendingIntent.getBroadcast 作为通知的内容意图的新警告:

builder.setContentIntent(PendingIntent.getBroadcast(FirebaseNotification.this, newID,
                                                  new Intent(getString(R.string.notif_broadcast))
                                                          .setClass(FirebaseNotification.this, NotificationActions.class)
                                                          .putExtra(getString(R.string.thumbnail), bitmap);

lint 消息:

通知应该只从通知中启动广播接收器 动作(addAction)

通知应该只从通知中启动广播接收器 动作 (addAction) (此 BroadcastReceiver 意图是从 通知;不鼓励这样做,除非作为通知操作)

我在文档中的任何地方都没有看到这一点,那么为什么现在不鼓励这样做呢?是为了用户体验并提供通知可以做什么的明确上下文吗?

【问题讨论】:

    标签: android broadcastreceiver android-notifications android-pendingintent


    【解决方案1】:

    如果点击通知发送广播,对用户来说没有多大意义。预期的行为是打开最初发送通知的实际应用程序,所以我不确定发送另一个通知(我认为这是你的代码实现的)会是好的用户体验。

    他们确实提到这是material design documentation,他们说:

    当用户点击通知时,他们应该被带到您应用中与该通知直接相关的屏幕,并让他们立即采取行动。

    【讨论】:

    • 我通常在其他应用程序上注意到的是点击通知,例如 FB 应用程序,将打开与通知标题或描述中的内容相关的相关屏幕,这就是我正在做的使用getBroadcast 使用其包路径打开一些活动。
    • 当您可以使用普通意图以参数/附加项启动您的应用程序时,这样做似乎很奇怪。然后您可以使用它们来显示相关的 UI。我不认为你描述的方法很标准,虽然它可以完成任务,所以如果你需要使用它,我会忽略警告。
    • setContentIntent 需要 PendingIntent 并且我不想在应用程序突然收到通知时打开任何活动,因此我不能说使用普通 Intent 就足够了。也许我只会将它与 addAction 一起使用,因为这样做会删除 lint 警告。
    • 是的,您可以使用 PendingIntentPendingIntent.getActivity(...) 方法。显然,您不必遵循指南,或者您可以使用您所说的操作。
    • 我只记得这里的 NotificationAction.class 是一个 BroadcastReceiver 用于处理许多请求或通知类型,从技术上讲,我并没有使用上面给定的代码打开活动。这个 BroadcastReceiver 里面的内容是打开一个浮动屏幕,就像一个聊天头。
    猜你喜欢
    • 2014-08-23
    • 2010-11-11
    • 2019-10-03
    • 2011-09-27
    • 2011-08-07
    • 2021-02-12
    • 2015-01-29
    • 2018-06-08
    • 2016-12-31
    相关资源
    最近更新 更多