gpt4 book ai didi

android - 是否可以在编译期间将资源(例如 R.drawable.ic_launcher)的 ID 设置为特定的 R 值?

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:47 25 4
gpt4 key购买 nike

我们在我们的应用程序中遇到了一个奇怪的问题,该问题主要发生在我们的应用程序在用户设备上更新时,而通知列表中的通知是“实时”的。

当用户点击通知时 - 我们得到一个异常:

android.app.RemoteServiceException
Bad notification posted from package ... : Couldn't create icon: StatusBarIcon(pkg=.....=0 id=0x0 level=0 visible=true num=0 )

似乎自应用程序更新以来 - resourceId 已更改并且不再合法,因此异常(exception)(更多信息在这里:How to fix: android.app.RemoteServiceException: Bad notification posted from package *: Couldn't create icon: StatusBarIcon)

目前,作为一个临时解决方案,我们设置了一个广播接收器,它会在应用更新后被触发并取消任何现有的通知。

但是 - 一个更优雅的解决方案是让像 R.drawable.ic_launcher 这样的资源在编译时始终获得相同的数值(标识符),这样即使在升级后它也会保持不变。

有办法吗?

最佳答案

在您的 res/values 文件夹中创建一个 public.xml。如果在 public.xml 中正确写入每个资源的 id,则可以固定。格式如下:

...
<public type="drawable" name="notification_icon" id="0x7f0200ab" />
...

请注意,Android 对这些 ID 有命名规则。您可以谷歌了解详情。

或者你可以反编译apk文件,从res/values得到一个public.xml。此文件包含所有资源,您可以只复制您想要的内容。

More关于 ID 修复。

关于android - 是否可以在编译期间将资源(例如 R.drawable.ic_launcher)的 ID 设置为特定的 R 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38455327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com