[英]Android notification action icon: Resources not found exception
我目前正在开发一个Android应用程序,它可以重新创建来自通知中心的通知。 为了完全重新创建通知体验,我还尝试在我的应用程序中提供通知操作(例如,音乐通知中的后退/播放/暂停/下一步按钮)。
Icon icon = notification.actions[0].getIcon();
((ImageView)view.findViewById(R.id.action0)).setImageIcon(icon);
但我在上面的第二行找到了资源未找到的异常。
E/Icon: Unable to load resource 0x7f020259 from pkg=
android.content.res.Resources$NotFoundException: Resource ID #0x7f020259
at android.content.res.Resources.getValue(Resources.java:2558)
[...]
我认为问题是该图标来自不同的应用程序,无法轻松访问,但我无法弄清楚如何正确访问图标。
当我的资源ID为int时,我知道如何从其他应用程序访问资源,但在这种情况下,我只有一个图标,但没有资源ID。
编辑:
文档: https : //developer.android.com/reference/android/app/Notification.Action.html#getIcon()
从动作中访问待定意图非常有效
Notification.Action.Icon.java不存储图标位图,它只存储其资源ID,您的应用程序无法读取其他应用程序的资源,它搜索自己的资源但无法找到ID,因此抛出异常。
public Icon getIcon() {
if (mIcon == null && icon != 0) {
// you snuck an icon in here without using the builder; let's try to keep it
mIcon = Icon.createWithResource("", icon);
}
return mIcon;
}
public static Icon createWithResource(String resPackage, @DrawableRes int resId) {
if (resPackage == null) {
throw new IllegalArgumentException("Resource package name must not be null.");
}
final Icon rep = new Icon(TYPE_RESOURCE);
rep.mInt1 = resId;
rep.mString1 = resPackage
return rep;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.