繁体   English   中英

Android通知操作图标:找不到资源异常

[英]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,因此抛出异常。

Notification.java中

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;
}

Icon.java中

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.

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