![](/img/trans.png)
[英]What do I have to do to change the ApplicationId of an Android App that's already published to the Google Play Store
[英]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()
的旧细节。
这允许拥有完全不同的启动器和直接共享快捷方式,并发布许多对话通知。
一些随机观察:
向对话通知添加快捷方式 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.