繁体   English   中英

如果我已经发布了 5 个快捷方式,如何在 Android 11 上发布对话通知?

[英]How do I issue conversation notifications on Android 11, if I already have published 5 shortcuts?

根据“人员和对话” ,Android 11 上的对话通知的先决条件之一如下:

该通知与有效的长期动态或缓存的共享快捷方式相关联。 通知可以通过调用setShortcutId()setShortcutInfo()来设置此关联。

我只能有 5 个快捷方式 这是否意味着我不能为超过 5 人发送对话通知?

看来您实际上可以发布超过 5 个快捷方式。 您可以通过将rank设置为高数字来制作排名低于所有其他通知的通知,并使用shortcutManager.pushDynamicShortcut()发布它们。

如果您没有任何启动器快捷方式,上述操作将创建一个。 如果您不希望这样,建议...只需删除您刚刚创建的快捷方式

问:我的快捷方式会出现在长按应用启动器上下文菜单中吗? 答:他们可以根据他们的等级,但如果您不希望在启动器上显示快捷方式,您可以在发送通知后使用ShortcutManager#removeDynamicShortcuts()#removeAllDynamicShortcuts()删除快捷方式。 您还可以对排名较高的其他应用快捷方式进行排名,因此只有那些动态快捷方式才会出现在启动器上。


下面是一些想法。 普通手机上的快捷方式似乎会出现在三个地方:

  • 启动器——通过长按应用程序图标或固定;
  • 直接分享;
  • 对话通知。

这些快捷方式都来自同一个池。 这是有道理的,但由于每个快捷方式只有一个等级,这意味着启动器列表和直接共享列表是相同的。 这是您可能不想要的; 您可能会在一个对话中分享更多内容,但更频繁地打开另一个对话。 在我的应用程序中,我通过以下方式解决了这个问题:

  • 我维护用户何时与联系人分享/打开与联系人聊天的统计信息
  • 每当最常用/最常用的共享联系人列表发生变化时,我都会使用shortcutManager.pushDynamicShortcut()更新快捷方式; 如果已存在具有相同 id 的快捷方式,则会对其进行更新。 我使用来自shortcutManager.getShortcuts()的旧细节。
    • 根据快捷方式是否成为或不再成为直接共享目标,我设置或取消设置类别
    • 指定等级允许在启动器中重新排序快捷方式
  • 每当我需要推送通知时,我都会检查我是否已经有对话的快捷方式。 如果没有,我只是创建一个排名为 10000 的新的。

这允许拥有完全不同的启动器和直接共享快捷方式,并发布许多对话通知。

一些随机观察:

  • 向对话通知添加快捷方式 ID 也会将其图标添加到通知中,即使您没有明确设置。

  • shortcutManager.maxShortcutCountPerActivity实际上在我的设备 (LineageOS) 上返回 15 (,)。 即使启动器和直接共享仅显示常规的 4 个图标。

  • 如果您更新快捷方式名称和/或图标,大多数情况下它会立即在启动器中更新。 这包括固定的快捷方式。

  • 使用IconCompat.createWithAdaptiveBitmap()创建适用于各种图标形状的图标。 系统会保留图像,您不需要保留它。 请参阅该方法的文档。

    还有两种方法需要注意:

    • IconCompat.createWithAdaptiveBitmapContentUri()与上述相同,但适用于内容 URI。 这对于为通知创建Person很有用,因为这允许不将图标保留在 memory 中。 不过貌似没有办法将URI权限传递给快捷方式管理器,所以这个方法不能用。 (如果我在这里错了,请纠正我!)

      编辑:如果您在内联(直接)回复后取消通知,系统可能会决定将您的回复添加到它而不是实际取消它。 显然,此时它可能会失去 URI 权限。 在 URI 上调用此解决方法似乎有所帮助:

       fun Uri.grantReadPermissionToSystem() { applicationContext.grantUriPermission("com.android.systemui", this, Intent.FLAG_GRANT_READ_URI_PERMISSION) }
    • IconCompat.createWithData()从压缩图像数据 (PNG/JPEG) 创建 memory 高效图标。 然而,它不是自适应的。 而且,用它制作的图标根本不适用于ShortcutManager

另外不要忘记查看People 示例应用程序的自述文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM